if (window.Evergage && window.SalesforceInteractions && window.SalesforceInteractions.mcis) { try { window.SalesforceInteractions.log.warn("Aborting SDK load since the SalesforceInteractions SDK was already found on this page."); } catch(e) {} } else { window.evergageBeaconParseTimeStart = (new Date().getTime()); 'use strict';var Evergage=function(l){function vc(c,d){var a=Object.keys(c);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(c);d&&(b=b.filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}));a.push.apply(a,b)}return a}function t(c){for(var d=1;darguments.length?c:a):b.value};return ja.apply(this,arguments)}function ya(c,d){var a=Array.isArray(c)?c:void 0;if(!a)a:{var b=null==c?null: "undefined"!=typeof Symbol&&c[Symbol.iterator]||c["@@iterator"];if(null!=b){var e,f,g,h=[],n=!0,I=!1;try{if(f=(b=b.call(c)).next,0===d){if(Object(b)!==b){a=void 0;break a}n=!1}else for(;!(n=(e=f.call(b)).done)&&(h.push(e.value),h.length!==d);n=!0);}catch(qa){I=!0;var k=qa}finally{try{if(!n&&null!=b.return&&(g=b.return(),Object(g)!==g)){a=void 0;break a}}finally{if(I)throw k;}}a=h}else a=void 0}if(!(c=a||yc(c,d)))throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); return c}function nb(c){var d=Array.isArray(c)?ob(c):void 0;d||(d="undefined"!==typeof Symbol&&null!=c[Symbol.iterator]||null!=c["@@iterator"]?Array.from(c):void 0);if(!(c=d||yc(c)))throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");return c}function yc(c,d){if(c){if("string"===typeof c)return ob(c,d);var a=Object.prototype.toString.call(c).slice(8,-1);"Object"===a&&c.constructor&&(a=c.constructor.name); if("Map"===a||"Set"===a)return Array.from(c);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return ob(c,d)}}function ob(c,d){if(null==d||d>c.length)d=c.length;for(var a=0,b=Array(d);ac.indexOf(a)})}function Ge(c,d,a,b,e){e.guid=e.guid||q.guid++;var f=c.___ce=c.___ce||{};f[d]=f[d]||[];f[d].push([a,b,e]);c.addEventListener(d, e)}function xb(c){c=c.split(".");return[c[0],c.slice(1).sort()]}function Qa(c,d,a,b,e){var f=c.___ce=c.___ce||{};if(d)f[d]&&(f[d]=f[d].filter(function(f){var g=ya(f,3);f=g[0];var n=g[1];g=g[2];if(e&&g.guid!==e.guid||!Fc(f,a)||b&&b!==n)return!0;c.removeEventListener(d,g)}));else for(d in f)Qa(c,d,a,b,e)}function Gc(c){return c.multiple&&c.options?V(tb.call(c.options,function(c){return c.selected&&!c.disabled&&!c.parentNode.disabled}),"value"):c.value||""}function Hc(c){if(!F(c))return[];if(He.test(c))return[ma(RegExp.$1)]; var d=Ie.test(c)&&RegExp.$1;d=Ic[d]||Ic["*"];d.innerHTML=c;return q(d.childNodes).detach().get()}function Je(c,d){c=q(c);c.filter("script").add(c.find("script")).each(function(a,b){if(Ke.test(b.type)&&yb.contains(b)){var c=ma("script");c.text=b.textContent.replace(Le,"");C(Me,function(a,d){b[d]&&(c[d]=b[d])});d.head.insertBefore(c,null);d.head.removeChild(c)}})}function ba(c,d,a,b,e,f,g,h){C(c,function(c,f){C(q(f),function(c,f){C(q(d),function(c,d){var g=a?d:f;d=a?f:d;c=c?g.cloneNode(!0):g;e?d.insertBefore(c, b?d.firstElementChild:null):d.parentNode.insertBefore(c,b?d:d.nextElementSibling);Je(c,d.ownerDocument)},h)},g)},f);return d}function Jc(c,d){var a=Object.keys(c);if(Object.getOwnPropertySymbols){var b=Object.getOwnPropertySymbols(c);d&&(b=b.filter(function(a){return Object.getOwnPropertyDescriptor(c,a).enumerable}));a.push.apply(a,b)}return a}function z(c){for(var d=1;darguments.length?c:a):b.value};return Sa.apply(this,arguments)}function Mc(c){var d=Array.isArray(c)?Ab(c):void 0;d||(d="undefined"!==typeof Symbol&&null!=c[Symbol.iterator]||null!=c["@@iterator"]?Array.from(c):void 0);if(!(c=d||Nc(c)))throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");return c}function Nc(c, d){if(c){if("string"===typeof c)return Ab(c,d);var a=Object.prototype.toString.call(c).slice(8,-1);"Object"===a&&c.constructor&&(a=c.constructor.name);if("Map"===a||"Set"===a)return Array.from(c);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return Ab(c,d)}}function Ab(c,d){if(null==d||d>c.length)d=c.length;for(var a=0,b=Array(d);a=c.length?{done:!0}:{done:!1,value:c[b++]}},e:function(a){throw a;},f:d}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");}var e=!0,f=!1,g;return{s:function(){a=a.call(c)},n:function(){var b=a.next();e=b.done;return b},e:function(a){f=!0;g=a},f:function(){try{e||null==a.return||a.return()}finally{if(f)throw g; }}}}function Oc(c){r.setLoggingLevel(c)}function Pc(){return r.getLoggingLevel()}function Cb(c){var d,a,b,e=[],f=[a=1732584193,b=4023233417,~a,~b,3285377520],g=[],h=unescape(encodeURI(c))+"\u0080",n=h.length;for(g[c=--n/4+2|15]=8*n;~n;)g[n>>2]|=h.charCodeAt(n)<<8*~n--;for(d=n=0;dn;a=[a[4]+(e[n]=16>n?~~g[d+n]:2*h|0>h)+1518500249+[b&I|~b&k,h=341275144+(b^I^k),882459459+(b&I|b&k|I&k),h+1535694389][n++/5>>2]+((h=a[0])<<5|h>>>27),h,b<<30|b>>>2,I,k]){h=e[n-3]^e[n-8]^e[n-14]^e[n-16]; b=a[1];var I=a[2];var k=a[3]}for(n=5;n;)f[--n]+=a[n]}for(h="";40>n;)h+=(f[n>>3]>>4*(7-n++)&15).toString(16);return h}function Qc(){var c=(window.navigator.userAgent||"")+(window.navigator.platform||"")+(new Date).getTime+JSON.stringify({})+Math.random();return Da(c).slice(0,16)}function Rc(c,d,a){return"function"===typeof a?{bind:c,selector:d,callback:a}:null}function Se(){Db=v.onFireException.on(function(c,d){document.dispatchEvent(new CustomEvent(w.OnException,{detail:{error:c,context:d}}))});Eb= v.onEventSend.on(function(c){document.dispatchEvent(new CustomEvent(w.OnBeforeEventSend,{detail:{actionEvent:c},cancelable:!0}))&&document.dispatchEvent(new CustomEvent(w.OnEventSend,{detail:{actionEvent:c}}))});Fb=v.onPageMatchStatusUpdated.on(function(c){document.dispatchEvent(new CustomEvent(w.OnPageMatchStatusUpdated,{detail:{matchStatus:c}}))});Gb=v.onInitSitemap.on(function(c){document.dispatchEvent(new CustomEvent(w.OnInitSitemap,{detail:{sitemapConfig:c}}))})}function W(c){Db&&Db();Eb&&Eb(); Fb&&Fb();Gb&&Gb();document.dispatchEvent(new CustomEvent(w.OnShutDown,{detail:{message:c}}));Hb="shutDown";return!1}function Ta(c,d,a,b){return c.addEventListener?(c.addEventListener(d,a,b),!0):!1}function ca(c,d,a,b){return c.removeEventListener?(c.removeEventListener(d,a,b),!0):!1}function Ib(c){var d=document.createElement("a");d.href=c;return d}function Sc(c){try{return decodeURIComponent(c.replace(/\+/g," "))}catch(d){return null}}function Tc(c){if(c=c.detail&&c.detail.actionEvent)if(c.itemAction&& c.itemAction.includes("View"))Ua();else{var d;if(d=c.interaction)c=c.interaction.name,d=c===oa.ViewCatalogObject||c===oa.ViewCatalogObjectDetail||c===oa.QuickViewCatalogObject||c===Ea.StopQuickViewCatalogObject;d&&Ua()}}function Jb(c){-1!==X&&(Kb(!1,c),clearTimeout(X),X=-1)}function Ua(){if(!p.beaconConfig.doNotTrackPingRequestsForActions){Jb(!0);document.removeEventListener(l.CustomEvents.OnEventSend,Tc);document.addEventListener(l.CustomEvents.OnEventSend,Tc);var c=Date.now();if(-1===G||c-G>=p.beaconConfig.minimumActivityTimeToRegister)G= c;X=setTimeout(function(){Kb(!0)},p.beaconConfig.timeOnPageTimerLengthMillis);r.info("Setting up time on page listeners.");ca(window,"pagehide",Lb);Ta(window,"pagehide",Lb);ca(window,"blur",Mb);Ta(window,"blur",Mb);ca(window,"focus",Nb);Ta(window,"focus",Nb);ca(document,"mousemove keydown scroll click",Fa);Ta(document,"mousemove keydown scroll click",Fa)}}function Kb(c,d){var a=Date.now();-1!==G&&(a-=G,p.beaconConfig.timeOnPageTimerLengthMillisD&&(D=0);c&&(-1!==X&&clearTimeout(X),X=setTimeout(function(){Kb(!0)},p.beaconConfig.timeOnPageTimerLengthMillis))}function Te(c){c={timeOnPageMillis:c};var d=Vc(),a={};if(d&&d.itemAction&&d.catalog)a=d.catalog;else if(d&&d.interaction&& d.interaction.catalogObject){a=d.interaction.catalogObject;var b={},e=a.id,f=a.type,g=xa(a,Ve);e&&f&&(b[a.type]={_id:e});a.relatedCatalogObjects&&(f=g.relatedCatalogObjects,e=f.Category,f=xa(f,We),Array.isArray(e)&&(b[a.type].categories=Wc(e)),0!==Object.keys(f).length&&(b[a.type].relatedCatalogObjects=f));a=b}0!==Object.keys(a).length&&(c.catalog=a);d&&d.interaction&&null!=d.interaction.name?c.action=d.interaction.name:d&&null!=d.action&&(c.action=d.action);Xc();c.performance={};d=xa(y,Xe);for(var h in d)y[h]&& (c.performance[h]=y[h]);return c}function Lb(){Jb()}function Mb(c){try{r.trace("Evergage: window blurred"),Va()}catch(d){x(d,"windowBlurFunction")}}function Nb(c){try{r.trace("Evergage: window focused"),Fa()}catch(d){x(d,"windowFocusFunction")}}function Va(){try{-1!==Y&&(clearTimeout(Y),Y=-1);var c=Date.now(),d=0;-1!==G&&(d=c-G);r.trace("Evergage: timeOnPage before: setUserInactive: ".concat(D));D+=d;r.trace("Evergage: timeOnPage after: setUserInactive: ".concat(D));G=-1}catch(a){x(a,"setUserInactive")}} function Fa(){r.trace("activity registered");try{-1!==Y&&(clearTimeout(Y),Y=-1);var c=Date.now();if(-1===G||c-G>=p.beaconConfig.minimumActivityTimeToRegister)-1!==G&&(r.trace("Evergage: timeOnPage before: activityRegistered: ".concat(D)),D+=c-Math.max(G,-1),r.trace("Evergage: timeOnPage after: activityRegistered: ".concat(D))),G=c}catch(d){x(d,"activityRegistered")}}function Ob(c,d){c="string"===typeof c?Error(c):c;for(var a in d)Object.defineProperty(c,a,{value:d[a],enumerable:!1});return c}function Yc(){try{var c, d=Zc,a=null===(c=d)||void 0===c?void 0:c.nonce;if(!a||""===a){var b;d=document.querySelector('script[src*="evergage.min.js"]')||document.querySelector('script[src*="cdn.evgnet.com"]');a=null===(b=d)||void 0===b?void 0:b.nonce}return a&&""!==a?a:null}catch(e){return r.debug("Error in discoverNonce:",e),null}}function $c(c,d){if("undefined"===typeof d||null===d||""===d)r.debug("No nonce found");else if(c instanceof HTMLScriptElement||c instanceof HTMLStyleElement||c instanceof HTMLLinkElement)c.nonce= d,r.debug("Nonce applied to element",c)}var T=function(c,d){return d={exports:{}},c(d,d.exports),d.exports}(function(c,d){c.exports=function(){function a(){for(var a=0,b={};a/,ze=/^\w+$/,Oa=function(){function c(d){var a=1d?0:1;aarguments.length?this[0]&&this[0][c]:this.each(function(a,e){e[c]=d});for(var a in c)this.prop(a,c[a]);return this}};m.get=function(c){return void 0===c?cd.call(this):this[0>c?c+this.length:c]};m.eq=function(c){return q(this.get(c))};m.first=function(){return this.eq(0)};m.last=function(){return this.eq(-1)};m.filter=function(c){var d=sb(c);return q(tb.call(this,function(a,b){return d.call(a,b,a)}))};var Be=/\S+/g;m.hasClass=function(c){return!!c&&wb.call(this,function(d){return d.classList.contains(c)})}; m.removeAttr=function(c){var d=Pa(c);return this.each(function(a,b){C(d,function(a,c){b.removeAttribute(c)})})};m.attr=function(c,d){if(c){if(F(c)){if(2>arguments.length){if(!this[0])return;var a=this[0].getAttribute(c);return null===a?void 0:a}return void 0===d?this:null===d?this.removeAttr(c):this.each(function(a,e){e.setAttribute(c,d)})}for(a in c)this.attr(a,c[a]);return this}};m.toggleClass=function(c,d){var a=Pa(c),b=void 0!==d;return this.each(function(c,f){C(a,function(a,c){b?d?f.classList.add(c): f.classList.remove(c):f.classList.toggle(c)})})};m.addClass=function(c){return this.toggleClass(c,!0)};m.removeClass=function(c){return arguments.length?this.toggleClass(c,!1):this.attr("class","")};q.unique=S;m.add=function(c,d){return q(S(this.get().concat(q(c,d).get())))};var ub=/^--/,vb={},Ee=ad.style,De=["webkit","moz","ms"];q.prefixedProp=Bc;var Fe={animationIterationCount:!0,columnCount:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0}; m.css=function(c,d){if(F(c)){var a=ub.test(c);c=Bc(c,a);if(2>arguments.length)return this[0]&&la(this[0],c,a);if(!c)return this;d=Cc(c,d,a);return this.each(function(b,f){f&&1===f.nodeType&&(a?f.style.setProperty(c,d):f.style[c]=d)})}for(var b in c)this.css(b,c[b]);return this};m.data=function(c,d){if(!c){if(!this[0])return;var a={},b;for(b in this[0].dataset)a[b]=Dc(this[0],b);return a}if(F(c))return 2>arguments.length?this[0]&&Dc(this[0],c):this.each(function(a,b){a=d;try{a=JSON.stringify(a)}catch(g){}b.dataset[za(c)]= a});for(a in c)this.data(a,c[a]);return this};C([!0,!1],function(c,d){C(["Width","Height"],function(a,b){var c="".concat(d?"outer":"inner").concat(b);m[c]=function(e){if(this[0])return rb(this[0])?Aa[c]:this[0]["".concat(d?"offset":"client").concat(b)]+(e&&d?sa(this[0],"margin".concat(a?"Top":"Left"))+sa(this[0],"margin".concat(a?"Bottom":"Right")):0)}})});C(["width","height"],function(c,d){m[d]=function(a){if(!this[0])return void 0===a?void 0:this;if(!arguments.length)return rb(this[0])?this[0][za("outer-".concat(d))]: this[0].getBoundingClientRect()[d]-Ec(this[0],!c);var b=parseInt(a,10);return this.each(function(a,f){f&&1===f.nodeType&&(a=la(f,"boxSizing"),f.style[d]=Cc(d,b+("border-box"===a?Ec(f,!c):0)))})}});var Rb={};m.toggle=function(c){return this.each(function(d,a){if(void 0===c?"none"===la(a,"display"):c){if(a.style.display=a.___cd||"","none"===la(a,"display")){d=a.style;a=a.tagName;if(Rb[a])a=Rb[a];else{var b=ma(a);R.body.insertBefore(b,null);var e=la(b,"display");R.body.removeChild(b);a=Rb[a]="none"!== e?e:"block"}d.display=a}}else a.___cd=la(a,"display"),a.style.display="none"})};m.hide=function(){return this.toggle(!1)};m.show=function(){return this.toggle(!0)};var Sb={focus:"focusin",blur:"focusout"},dd={mouseenter:"mouseover",mouseleave:"mouseout"},df=/^(mouse|pointer|contextmenu|drag|drop|click|dblclick)/i;m.off=function(c,d,a){var b=this;if(void 0===c)this.each(function(a,b){Qa(b)});else if(F(c))ka(d)&&(a=d,d=""),C(Pa(c),function(c,e){c=xb(dd[e]||Sb[e]||e);c=ya(c,2);var f=c[0],g=c[1];b.each(function(b, c){Qa(c,f,g,d,a)})});else for(var e in c)this.off(e,c[e]);return this};m.on=function(c,d,a,b){var e=this;if(!F(c)){for(var f in c)this.on(f,d,c[f]);return this}ka(d)&&(a=d,d="");C(Pa(c),function(c,f){c=xb(dd[f]||Sb[f]||f);c=ya(c,2);var g=c[0],h=c[1];e.each(function(c,e){c=function Oe(c){if(!c.namespace||Fc(h,c.namespace.split("."))){var f=e;if(d){for(var n=c.target;!qb(n,d);){if(n===e)return;n=n.parentNode;if(!n)return}f=n;c.___cd=!0}c.___cd&&Object.defineProperty(c,"currentTarget",{configurable:!0, get:function(){return f}});n=a.call(f,c,c.data);b&&Qa(e,g,h,d,Oe);!1===n&&(c.preventDefault(),c.stopPropagation())}};c.guid=a.guid=a.guid||q.guid++;Ge(e,g,h,d,c)})});return this};m.one=function(c,d,a){return this.on(c,d,a,!0)};m.ready=function(c){"loading"!==R.readyState?c(q):R.addEventListener("DOMContentLoaded",function(){c(q)});return this};m.trigger=function(c,d){if(F(c)){var a=xb(c),b=ya(a,2);a=b[0];b=b[1];var e=df.test(a)?"MouseEvents":"HTMLEvents";c=R.createEvent(e);c.initEvent(a,!0,!0);c.namespace= b.join(".")}c.data=d;var f=c.type in Sb;return this.each(function(a,b){if(f&&ka(b[c.type]))b[c.type]();else b.dispatchEvent(c)})};var ef=/%20/g,ff=/file|reset|submit|button|image/i,gf=/radio|checkbox/i;m.serialize=function(){var c="";this.each(function(d,a){C(a.elements||[a],function(a,d){d.disabled||!d.name||"FIELDSET"===d.tagName||ff.test(d.type)||gf.test(d.type)&&!d.checked||(a=Gc(d),void 0!==a&&(a=Qb(a)?a:[a],C(a,function(a,b){a=c;b="&".concat(encodeURIComponent(d.name),"=").concat(encodeURIComponent(b).replace(ef, "+"));c=a+b})))})});return c.slice(1)};m.val=function(c){return void 0===c?this[0]&&Gc(this[0]):this.each(function(d,a){if("SELECT"===a.tagName){var b=Qb(c)?c:null===c?[]:[c];C(a.options,function(a,c){c.selected=0<=b.indexOf(c.value)})}else a.value=null===c?"":c})};m.clone=function(){return this.map(function(c,d){return d.cloneNode(!0)})};m.detach=function(){return this.each(function(c,d){d.parentNode&&d.parentNode.removeChild(d)})};var Ie=/^\s*<(\w+)[^>]*>/,He=/^\s*<(\w+)\s*\/?>(?:<\/\1>)?\s*$/, Ic={"*":ad,tr:Ze,td:bd,th:bd,thead:Pb,tbody:Pb,tfoot:Pb};q.parseHTML=Hc;m.empty=function(){return this.each(function(c,d){for(;d.firstChild;)d.removeChild(d.firstChild)})};m.html=function(c){return void 0===c?this[0]&&this[0].innerHTML:this.each(function(d,a){a.innerHTML=c})};m.remove=function(){return this.detach().off()};m.text=function(c){return void 0===c?this[0]?this[0].textContent:"":this.each(function(d,a){a.textContent=c})};m.unwrap=function(){this.parent().each(function(c,d){c=q(d);c.replaceWith(c.children())}); return this};m.offset=function(){var c=this[0];if(c)return c=c.getBoundingClientRect(),{top:c.top+Aa.pageYOffset-yb.clientTop,left:c.left+Aa.pageXOffset-yb.clientLeft}};m.offsetParent=function(){return q(this[0]&&this[0].offsetParent)};m.position=function(){var c=this[0];if(c)return{left:c.offsetLeft,top:c.offsetTop}};m.children=function(c){return ra(q(S(V(this,function(c){return c.children}))),c)};m.contents=function(){return q(S(V(this,function(c){return"IFRAME"===c.tagName?[c.contentDocument]: c.childNodes})))};m.find=function(c){return q(S(V(this,function(d){return pb(c,d)})))};var Le=/^\s*\s*$/g,Ke=/^$|^module$|\/(java|ecma)script/i,Me=["type","src","nonce","noModule"];m.after=function(){return ba(arguments,this,!1,!1,!1,!0,!0)};m.append=function(){return ba(arguments,this,!1,!1,!0)};m.appendTo=function(c){return ba(arguments,this,!0,!1,!0)};m.before=function(){return ba(arguments,this,!1,!0)};m.insertAfter=function(c){return ba(arguments,this,!0,!1,!1, !1,!1,!0)};m.insertBefore=function(c){return ba(arguments,this,!0,!0)};m.prepend=function(){return ba(arguments,this,!1,!0,!0,!0,!0)};m.prependTo=function(c){return ba(arguments,this,!0,!0,!0,!1,!1,!0)};m.replaceWith=function(c){return this.before(c).remove()};m.replaceAll=function(c){q(c).replaceWith(this);return this};m.wrapAll=function(c){c=q(c);for(var d=c[0];d.children.length;)d=d.firstElementChild;this.first().before(c);return this.appendTo(d)};m.wrap=function(c){return this.each(function(d, a){var b=q(c)[0];q(a).wrapAll(d?b.cloneNode(!0):b)})};m.wrapInner=function(c){return this.each(function(d,a){d=q(a);a=d.contents();a.length?a.wrapAll(c):d.append(c)})};m.has=function(c){var d=F(c)?function(a,b){return pb(c,b).length}:function(a,b){return b.contains(c)};return this.filter(d)};m.is=function(c){var d=sb(c);return wb.call(this,function(a,b){return d.call(a,b,a)})};m.next=function(c,d){return ra(q(S(V(this,"nextElementSibling",d))),c)};m.nextAll=function(c){return this.next(c,!0)};m.not= function(c){var d=sb(c);return this.filter(function(a,b){return!d.call(b,a,b)})};m.parent=function(c){return ra(q(S(V(this,"parentNode"))),c)};m.index=function(c){var d=c?q(c)[0]:this[0];c=c?this:q(d).parent().children();return Ac.call(c,d)};m.closest=function(c){var d=this.filter(c);if(d.length)return d;var a=this.parent();return a.length?a.closest(c):d};m.parents=function(c){return ra(q(S(V(this,"parentElement",!0))),c)};m.prev=function(c,d){return ra(q(S(V(this,"previousElementSibling",d))),c)}; m.prevAll=function(c){return this.prev(c,!0)};m.siblings=function(c){return ra(q(S(V(this,function(c){return q(c).parent().children().not(c)}))),c)};var Tb=["error","warn","info","debug","trace"],r=new (function(){function c(){var d=0=new Date(a.lastSentTime)}).map(function(a){return a.consent});pf(d.consents)};document.addEventListener(w.OnConsentRevoke,function(d){d.detail&&d.detail.revokedConsent&&vf({interaction:{name:ua.MetadataUpdate},consents:[d.detail.revokedConsent.consent]})}); var vd=function(d){return ud(d,tf).catch(function(a){r.error(a.message);v.onFireException.emit(a,"Site-wide JavaScript");return d})},vf=function(d){ud(d,function(){return!0}).then(function(){return r.debug("Consent revoked")},function(a){return v.onFireException.emit(a,"Site-wide JavaScript")})},ud=function(d,a){a:{var b=d,e=u.matchedConfig;try{b=e&&e.onActionEvent?e.onActionEvent(b):b;if("object"===J(b)){d=b;break a}v.onFireException.emit(Error("onActionEvent failed for the ".concat(u.matchedConfig.name, " page config. Must return an object or null.")),"Site-wide Javascript")}catch(f){v.onFireException.emit(Error("onActionEvent failed for the ".concat(u.matchedConfig.name," page config. ").concat(f.message,".")),"Site-wide Javascript")}d=void 0}a:{b=d;try{b=M.global&&M.global.onActionEvent?M.global.onActionEvent(b):b;if("object"===J(b)){d=b;break a}v.onFireException.emit(Error("onActionEvent failed for the global page config. Must return an object or null."),"Site-wide Javascript")}catch(f){v.onFireException.emit(Error("onActionEvent failed for the global page config. ".concat(f.message, ".")),"Site-wide Javascript")}d=void 0}td(d);a&&!a()&&r.debug("No opt-in consents provided. Event will still be dispatched.");r.debug("Sent event: ",d);v.onEventSend.emit(d);return Promise.resolve(d)},wf=function(d){return new Promise(function(a,b){v.onInitSitemap.once(function(){return b("sitemap_reinit")});var e={name:null},f=[];Object.keys(d.interaction).forEach(function(a){var b=wd(d.interaction[a],a).then(function(b){e[a]=b});f.push(b)});Promise.all(f).then(function(){a(e)}).catch(function(a){v.onFireException.emit(Error("Catalog object interaction config was rejected"), "Site-wide Javascript")})})},wd=function(d,a){try{return E=a,"object"===J(d)&&!Array.isArray(d)&&0=e&&(Ia(b),g(!1))}catch(qa){Ia(b),h(qa)}},f);fa[b]=function(){clearInterval(k)}})},unbind:Ia,getBindings:function(){return fa},clearBindings:function(){for(var a in fa)fa.hasOwnProperty(a)&&"function"===typeof fa[a]&&Ia(a)}}};var Hb="shutDown";var va={cookieDomain:null, consents:null},Ed=function(){function a(a,b,f){if(f)for(a=Math.random().toString(36).slice(2);e[a];)a=Math.random().toString(36).slice(2);else a=a||b;return a}function b(b,f){return{pageElementLoaded:function(h,n){if("string"!==typeof n||""===n)n=0"+h,f);e[b]=function(){m&&m.disconnect()}})},pageElementVisible:function(h, n){var k=n||0;if("string"!==typeof h||""===h||"number"!==typeof k||0>k||1"+h,f);e[b]=function(){m.disconnect()}})},pageExit:function(h){h=h||0;if("number"!==typeof h||0>h)throw Error("[pageExit] Invalid arguments"); return new Promise(function(n){function k(a){clearTimeout(p);10>=a.pageY-window.pageYOffset&&(p=0",f);e[b]=function(){m.off("mousemove",k)}})},pageInactive:function(h){function n(a,e){var f=new Promise(function(f){function h(a){a=a||new Event("pageInactive");b&&!e.isSubscribe?g.unbind(b):k.off("mousemove click scroll keyup keydown", n);f(a)}function n(b){clearTimeout(l);l=setTimeout(h.bind(this,b),a)}var k=B(document),l;n();k.on("mousemove click scroll keyup keydown",n)});f.subscribe=function(h){delete f.subscribe;e.isSubscribe=!0;f.then(function(f){f.disconnect=function(){b?g.unbind(b):e.isDisconnected=!0};h(f);!e.isDisconnected&&n(a,e).subscribe(h)});return f};return f}if("number"!==typeof h||0>=h)throw Error("[pageInactive] Invalid arguments");var k={isDisconnected:!1,isSubscribe:!1};b=a(b,"",f);e[b]=function(){k.isDisconnected= !0};return n(h,k)},pageScroll:function(h){if("number"!==typeof h||0>h||1=h&&(n(a),b?g.unbind(b):l.off("scroll",k))}var l=B(document);l.on("scroll",k);b=a(b,"",f);e[b]=function(){l.off("scroll",k)}})}}}var e={},f=b(null,!0),g=function(){return{bind:function(a){a&&e[a]&&(e[a](),delete e[a]);return b(a)},unbind:function(a){if(!a|| "string"!==typeof a||"function"!==typeof e[a])return null;e[a]();delete e[a]},getBindings:function(){return e},clearBindings:function(){for(var a in e)e.hasOwnProperty(a)&&(e[a](),delete e[a])}}}();return Object.assign(f,g)}(),bb=function(){function a(b){var e=this;Ba(this,a);this.clearRateLimiter=function(){e.sentEvents=[]};this.eventWithinLimitTimeRange=function(a,b,e){return e-b.timeg)?(r.info("Event rate limit exceeded. More than ".concat(g," events ")+"sent in ".concat(f,"ms.")),!0):!1};this.checkLimits=function(a,b){return e.checkGlobalLimits(a, b.time)};this.sentEvents=[];this.eventRateLimiterConfig=b}Ca(a,[{key:"resetCounters",value:function(){this.globalCounter=0}},{key:"isTriggerLimitExceeded",value:function(a){var b=Date.now();a=z(z({},a),{},{time:b});this.sentEvents.push(a);this.removeOldEvents(b);this.resetCounters();for(b=this.sentEvents.length-1;0<=b;b--)if(this.checkLimits(b,a))return!0;return!1}}]);return a}(),Gf=function(a){function b(a){Ba(this,b);var f=e.call(this,a);f.getTimeRangeMax=function(){return f.eventRateLimiterConfig.perInteractionTimeRange? Math.max(f.eventRateLimiterConfig.globalTimeRange,f.eventRateLimiterConfig.perInteractionTimeRange):f.eventRateLimiterConfig.globalTimeRange};f.checkInteractionLimits=function(a,b,e){return f.eventRateLimiterConfig.perInteractionLimit&&f.eventRateLimiterConfig.perInteractionTimeRange&&f.eventWithinLimitTimeRange(f.eventRateLimiterConfig.perInteractionTimeRange,f.sentEvents[a],b)&&f.sentEvents[a].name===e&&(f.perEventCounter++,f.perEventCounter>f.eventRateLimiterConfig.perInteractionLimit)?(r.info("Event rate limit exceeded. More than ".concat(f.eventRateLimiterConfig.perInteractionLimit, " events ")+"with interaction name of ".concat(e," sent in ").concat(f.eventRateLimiterConfig.perInteractionTimeRange,"ms.")),!0):!1};f.checkLimits=function(a,b){return f.checkGlobalLimits(a,b.time)||f.checkInteractionLimits(a,b.time,b.name)};return f}Pe(b,a);var e=Re(b);Ca(b,[{key:"resetCounters",value:function(){Sa(na(b.prototype),"resetCounters",this).call(this);this.perEventCounter=0}},{key:"isTriggerLimitExceeded",value:function(a){return Sa(na(b.prototype),"isTriggerLimitExceeded",this).call(this, a)}}]);return b}(bb),Db,Eb,Fb,Gb,bc=function(){var a=0=a.length)return a;var b=731,e=244;974!=b+e&&(b+=974-(b+e));10f.eventRateLimiterConfig.perExperienceLimit)return r.info("Event rate limit exceeded. More than ".concat(f.eventRateLimiterConfig.perExperienceLimit," events ")+"with experience id of ".concat(e," sent in ").concat(f.eventRateLimiterConfig.perExperienceTimeRange,"ms.")),!0}};f.checkLimits=function(a,b){return f.checkGlobalLimits(a,b.time)||f.checkExperienceLimits(a,b.time)};return f}Ma(b,a);var e=Na(b);ia(b,[{key:"resetCounters",value:function(){ja(Q(b.prototype),"resetCounters", this).call(this);this.experienceRates=new Map}},{key:"isTriggerLimitExceeded",value:function(a){return ja(Q(b.prototype),"isTriggerLimitExceeded",this).call(this,a)}}]);return b}(bb),lc=function(){function a(b){ha(this,a);this.baseURL=b}ia(a,[{key:"send",value:function(a){Uf(a);var b=Od(a);if(p.beaconConfig.usePostForEvents){if(navigator&&navigator.sendBeacon)return b=new Blob([b],{type:"application/x-www-form-urlencoded"}),navigator.sendBeacon(this.baseURL,b);a=new XMLHttpRequest;a.open("POST",this.baseURL, !0);a.setRequestHeader("Content-Type","application/x-www-form-urlencoded");a.send(b)}else{b=this.baseURL+"?"+Od(a);if(navigator&&navigator.sendBeacon)return a=new Blob([],{type:"application/x-www-form-urlencoded"}),navigator.sendBeacon(b,a);a=new XMLHttpRequest;a.open("GET",b,!0);a.send()}}}]);return a}(),Vf=function(a){function b(a,g){ha(this,b);a=e.call(this,a);a.eventRateLimiter=g||new bb({globalLimit:p.beaconConfig.errorRateLimiterConfig.globalLimit,globalTimeRange:p.beaconConfig.errorRateLimiterConfig.globalTimeRange}); return a}Ma(b,a);var e=Na(b);ia(b,[{key:"send",value:function(a){if(this.eventRateLimiter.isTriggerLimitExceeded())r.warn("Error event rate limiter triggered.");else return ja(Q(b.prototype),"send",this).call(this,a)}}]);return b}(lc),Wf=function(a){function b(a,g){ha(this,b);a=e.call(this,a);a.eventRateLimiter=g||new bb({globalLimit:p.beaconConfig.pingRateLimiterConfig.globalLimit,globalTimeRange:p.beaconConfig.pingRateLimiterConfig.globalTimeRange});return a}Ma(b,a);var e=Na(b);ia(b,[{key:"send", value:function(a){if(this.eventRateLimiter.isTriggerLimitExceeded())r.warn("Ping event rate limiter triggered.");else return ja(Q(b.prototype),"send",this).call(this,a)}}]);return b}(lc),Xf=function(a){function b(a,g){ha(this,b);a=e.call(this,a);a.eventRateLimiter=g||new Tf({globalLimit:p.beaconConfig.campaignStatRateLimiterConfig.globalLimit,globalTimeRange:p.beaconConfig.campaignStatRateLimiterConfig.globalTimeRange,perExperienceLimit:p.beaconConfig.campaignStatRateLimiterConfig.perExperienceLimit, perExperienceTimeRange:p.beaconConfig.campaignStatRateLimiterConfig.perExperienceTimeRange});return a}Ma(b,a);var e=Na(b);ia(b,[{key:"send",value:function(a,e){e=e?e:[];if(this.eventRateLimiter.isTriggerLimitExceeded({experienceIds:e}))r.warn("Campaign Stat event rate limiter triggered.");else return ja(Q(b.prototype),"send",this).call(this,a)}}]);return b}(lc),Uf=function(a){Object.keys(a).forEach(function(b){var e=a[b];if("number"!=typeof e&&"boolean"!==typeof e&&null!=e)if("string"==typeof e){a:switch(b){case "url":case "urlref":e= e.substring(0,3072);break a;case "title":e=e.substring(0,1024);break a;default:e=e.substring(0,1024)}a[b]=e}else"function"==typeof e?delete a[b]:a[b]=JSON.stringify(e)})},eb,fb,gb,Pd=!1,Qd=!1,Rd=!1,y={sdkLoadTime:null,sdkParseTime:null,sdkDnsTime:null,pageLoadTime:null,domLoadTime:null,networkTime:null,eventDnsTime:null},Sd=function(){return window.performance.getEntriesByType?window.performance.getEntriesByType("resource").reverse().find(function(a){return 0<=a.name.indexOf("/api2/event/")}):null}, Td=function(){return window.performance.getEntriesByType?window.performance.getEntriesByType("resource").find(function(a){return/\/evergage(Small)?(\.min)?\.js$/.test(a.name)}):null},Ud=function(){if(window.performance.getEntriesByType){var a=window.performance.getEntriesByType("navigation");if(a&&0this.status)try{var a=JSON.parse(k.response); e(a)}catch(Ne){g(Ob(Ne,{status:this.status,statusText:k.statusText}))}else g(Ob("Response was not OK: ".concat(k.responseText),{status:this.status,statusText:k.statusText}))};k.onerror=function(){if(""===k.responseType||"text"===k.responseType){var a=k.responseText||k.statusText;if(a){g(Ob("Response error: ".concat(a),{status:this.status,statusText:k.statusText}));return}}r.debug("An error was sent with no text. This is un-actionable so it is being logged instead of written.")}; if(a.debug&&a.debug.explanations||a.explain)k.withCredentials=!0;if(p.beaconConfig.usePostForEvents||"true"==mc("isReadableEvent"))b.sendPost(k,b.baseURL,f);else try{if(!/^[\x20-\x7E]+$/.test(f))throw Error("GET request payload contains non-ASCII characters, try sending POST request");var l=encodeURIComponent(window.btoa(f)),m=b.baseURL+"?event="+l;if(8192 { if (validateOnTemplateDisplayEndEvent(event)) { const payload = event.detail.payload; const campaignElement = getCampaignElementFromPayload(payload); sendImpression(payload, campaignElement); bindCampaignClickthroughsAndDismissals(campaignElement); } }); const sendImpression = (payload, campaignElement) => { const userGroup = payload.userGroup; const stat = { control: userGroup === CAMPAIGN_STAT_USER_GROUP.CONTROL, experienceId: payload.experience, stat: CAMPAIGN_STAT_TYPE.IMPRESSION }; const itemStats = generateItemStats(campaignElement); if (Object.keys(itemStats).length > 0) { stat.catalog = itemStats; } if (userGroup === CAMPAIGN_STAT_USER_GROUP.CONTROL || (userGroup === CAMPAIGN_STAT_USER_GROUP.TEST && campaignElement.length > 0)) { Evergage.sendStat({campaignStats: [stat]}); } else { Evergage.log.warn("campaignStatsTracking.js", "Experience", payload.experience, "not found in DOM."); } }; const generateItemStats = (campaignElement) => { const catalogStats = {}; const itemNodes = Evergage.cashDom(campaignElement).find("[" + CAMPAIGN_STAT_ATTRIBUTE.ITEM_TYPE + "]"); if (!itemNodes || itemNodes.length === 0) { return catalogStats; } Array.from(itemNodes).forEach(function(itemNode) { const itemId = Evergage.cashDom(itemNode).attr(CAMPAIGN_STAT_ATTRIBUTE.ITEM); const itemType = Evergage.cashDom(itemNode).attr(CAMPAIGN_STAT_ATTRIBUTE.ITEM_TYPE); if (itemId && itemType) { if (!catalogStats[itemType]) { catalogStats[itemType] = []; } if (!catalogStats[itemType].includes(itemId)) { catalogStats[itemType].push(itemId); } } }); return catalogStats; } const buildCampaignSelector = (experienceId) => { return `[${CAMPAIGN_STAT_ATTRIBUTE.EXPERIENCE}='${experienceId}']` } const getCampaignElementFromPayload = (payload) => { const experienceId = payload.experience; const campaignSelector = buildCampaignSelector(experienceId); return Evergage.cashDom(campaignSelector); }; const getCampaignClickthroughAndDismissalElements = (campaignElement) => { const experienceId = Evergage.cashDom(campaignElement).attr(`${CAMPAIGN_STAT_ATTRIBUTE.EXPERIENCE}`); const campaignSelector = buildCampaignSelector(experienceId); return Evergage.cashDom(campaignElement).parent().find(` ${campaignSelector}[${CAMPAIGN_STAT_ATTRIBUTE.CLICKTHROUGH}], ${campaignSelector} a, ${campaignSelector} [${CAMPAIGN_STAT_ATTRIBUTE.CLICKTHROUGH}], ${campaignSelector} [${CAMPAIGN_STAT_ATTRIBUTE.DISMISSAL}] `); }; const sendClickthroughOrDismissal = (e) => { if (Evergage.cashDom(e.target).closest(`[${CAMPAIGN_STAT_ATTRIBUTE.IGNORE_CLICKTHROUGH}]`).length > 0) { return; } const campaignElement = Evergage.cashDom(e.target).closest(`[${CAMPAIGN_STAT_ATTRIBUTE.EXPERIENCE}]`); if (campaignElement.length > 0 && Evergage.cashDom(e.target).closest(` a, [${CAMPAIGN_STAT_ATTRIBUTE.CLICKTHROUGH}], [${CAMPAIGN_STAT_ATTRIBUTE.DISMISSAL}]`).length > 0) { const stat = { control: campaignElement.attr(CAMPAIGN_STAT_ATTRIBUTE.USER_GROUP) === CAMPAIGN_STAT_USER_GROUP.CONTROL, experienceId: campaignElement.attr(CAMPAIGN_STAT_ATTRIBUTE.EXPERIENCE), stat: Evergage.cashDom(e.target).closest(`[${CAMPAIGN_STAT_ATTRIBUTE.CLICKTHROUGH}]`).length > 0 || Evergage.cashDom(e.target).closest("a").length > 0 ? CAMPAIGN_STAT_TYPE.CLICKTHROUGH : CAMPAIGN_STAT_TYPE.DISMISSAL }; if (stat.stat === CAMPAIGN_STAT_TYPE.CLICKTHROUGH) { const itemClickthroughStats = generateItemClickthroughStats(e.target); if (Object.keys(itemClickthroughStats).length > 0) { stat.catalog = itemClickthroughStats; } } Evergage.sendStat({campaignStats: [stat]}); } }; const generateItemClickthroughStats = (target) => { const itemStats = {}; const itemId = Evergage.cashDom(target).closest("[" + CAMPAIGN_STAT_ATTRIBUTE.ITEM + "]").attr(CAMPAIGN_STAT_ATTRIBUTE.ITEM); const itemType = Evergage.cashDom(target).closest("[" + CAMPAIGN_STAT_ATTRIBUTE.ITEM_TYPE + "]").attr(CAMPAIGN_STAT_ATTRIBUTE.ITEM_TYPE); if (itemId && itemType) { itemStats[itemType] = [itemId]; } return itemStats; } const bindCampaignClickthroughsAndDismissals = (campaignElement) => { const elements = getCampaignClickthroughAndDismissalElements(campaignElement); elements.off("click", sendClickthroughOrDismissal); elements.on("click", sendClickthroughOrDismissal); }; const validateOnTemplateDisplayEndEvent = (event) => { if (!event.detail) { Evergage.log.warn("campaignStatsTracking.js", "No detail object found for onTemplateDisplayEndEvent", event); return false; } if (!event.detail.payload) { Evergage.log.warn("campaignStatsTracking.js", "No payload object found for onTemplateDisplayEndEvent", event); return false; } if (!event.detail.payload.campaign) { Evergage.log.warn("campaignStatsTracking.js", "No campaign found in payload object", event.detail); return false; } if (!event.detail.payload.experience) { Evergage.log.warn("campaignStatsTracking.js", "No experience found in payload object", event.detail); return false; } if (!event.detail.payload.userGroup) { Evergage.log.warn("campaignStatsTracking.js", "No user group found in payload object", event.detail); return false; } return true; }; } catch (e) { if (typeof window.Evergage === "object" && typeof window.Evergage.getVersion === "function" && window.Evergage.getVersion() >= 5) { Evergage.sendException(e, "beaconExtension: Campaign Stats Tracking:campaignStatsTracking.js"); } }; try { !function(e,t){for(var n in t)e[n]=t[n]}(window,function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=3)}([function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.restrictContentZone=t.executeControl=t.handleCampaignResponses=t.renderTemplate=t.resetTemplate=t.registerTemplate=t.executeBundles=void 0;var a=n(5),l=n(1),c=i(n(2));n(6);var s=new Map,u=new Map,p=new Set,d=function(){return document.getElementsByTagName("html").length>0&&null!=document.getElementsByTagName("html")[0].getAttribute(c.VE_LOADING_ATTRIBUTE)||null!=document.getElementById(c.VE_ACTIVE_ELEMENT_ID)||"true"===localStorage.getItem(c.VE_INDICATOR_FLAG)||document.location.href.includes(c.TEST_TEMPLATE_PARAMETER)},f=function(e){return s.get(e)},h=function(e,t){return[e,t.campaign,t.experience].join(":")};t.executeBundles=function(e){var n,r;if(e){var o=!0,i=(null===(n=window.SalesforceInteractions)||void 0===n?void 0:n.mcis)||window.Evergage,a=null===(r=null==i?void 0:i.discoverNonce)||void 0===r?void 0:r.call(i);e.forEach((function(e){var n,r,c=!1;try{try{var s=document.createElement("script");r="prepareTemplate"+e.id,s.text="function "+r+"(TemplateService) { "+e.bundle+" }",a&&(null==i?void 0:i.applyNonceToElement)&&(i.applyNonceToElement(s,a),c=!0),n=document.head.appendChild(s),window[r]({registerTemplate:t.registerTemplate})}catch(n){if(c)throw n;o=!1,Function("TemplateService",e.bundle)({registerTemplate:t.registerTemplate})}}catch(e){l.dispatchError(e)}finally{n&&n.parentNode.removeChild(n),r&&window[r]&&(window[r]=void 0)}})),o||console.warn("Marketing Cloud Personalization will soon require your Content Security Policy to allow `unsafe-inline`.")}},t.registerTemplate=function(e){var t=new a.Template(e);s.set(e.name,t)},t.resetTemplate=function(e,t){var n=h(e,t),r=u.get(n);if(r)try{r()}catch(e){l.dispatchError(e)}u.delete(n)},t.renderTemplate=function(e,t){if(s.has(e)){var n=f(e).render(t);u.set(h(e,t),n)}},t.handleCampaignResponses=function(e){d()||e.filter((function(e){return"ng"===e.type})).filter((function(e){return!g(e)})).forEach((function(e){switch(e.userGroup){case"Default":m(e);break;case"Control":t.executeControl(e)}}))};var m=function(e){e.templateNames.forEach((function(n){t.renderTemplate(n,e.payload)}))};t.executeControl=function(e){e.templateNames.forEach((function(t){var n=f(t),r=e.payload;if(n.control)try{var o=n.control(r);l.handleTemplateDispatch(o,r)}catch(e){l.dispatchError(e)}}))};var g=function(e){return e.payload.contentZone&&p.has(e.payload.contentZone)};t.restrictContentZone=function(e){e&&p.add(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dispatchError=t.handleTemplateDispatch=t.getQueryParam=void 0,t.getQueryParam=function(e){var t=location.search;e=e.replace(/[[]/,"\\[").replace(/[\]]/,"\\]");var n=new RegExp("[\\?&]"+e+"=([^&#]*)").exec(t);return null===n?"":decodeURIComponent(n[1].replace(/\+/g," "))};var r=function(e){document.dispatchEvent(new CustomEvent(window.Evergage.CustomEvents.OnTemplateDisplayEnd,{detail:{payload:e}})),document.dispatchEvent(new CustomEvent(window.SalesforceInteractions.mcis.CustomEvents.OnTemplateDisplayEnd,{detail:{payload:e}}))};t.handleTemplateDispatch=function(e,t){window.Promise&&"function"==typeof window.Promise.resolve?window.Promise.resolve(e).then((function(){r(t)})):r(t)},t.dispatchError=function(e){document.dispatchEvent(new CustomEvent(window.SalesforceInteractions.CustomEvents.OnException,{detail:{error:new Error(e),context:"Handlebars Template Gear"}}))}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VE_ACTIVE_ELEMENT_ID=t.VE_INDICATOR_FLAG=t.VE_LOADING_ATTRIBUTE=t.TEST_TEMPLATE_PARAMETER=t.TEST_TEMPLATE_STORAGE_KEY=void 0,t.TEST_TEMPLATE_STORAGE_KEY="testTemplate",t.TEST_TEMPLATE_PARAMETER="evergageTestTemplate",t.VE_LOADING_ATTRIBUTE="evergagevisualeditorloading",t.VE_INDICATOR_FLAG="evgVE",t.VE_ACTIVE_ELEMENT_ID="evg_ui-visual-editor"},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.render=void 0;var r=n(4),o=n(7),i=n(0);function a(){/complete|interactive|loaded/.test(document.readyState)?(r.renderTestTemplate(),o.initPreview()):document.addEventListener("DOMContentLoaded",(function(){r.renderTestTemplate(),o.initPreview()}))}document.addEventListener(window.Evergage.CustomEvents.OnEventResponse,(function(e){i.executeBundles(e.detail.response.compiledCampaignTemplates),i.handleCampaignResponses(e.detail.response.campaignResponses)})),t.render=a,a()},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.renderTestTemplate=void 0;var r=n(0),o=n(1),i=n(2);t.renderTestTemplate=function(){if("true"==o.getQueryParam(i.TEST_TEMPLATE_PARAMETER)){var e=a();addEventListener("storage",(function(t){t.key==i.TEST_TEMPLATE_STORAGE_KEY&&(e&&r.resetTemplate(e.templateName,e.templateConfig),e=a())}))}};var a=function(){var e=localStorage.getItem(i.TEST_TEMPLATE_STORAGE_KEY);if(e)try{var t=JSON.parse(e);return r.executeBundles(t.templates),r.renderTemplate(t.templateName,t.templateConfig),r.restrictContentZone(t.templateConfig.contentZone),t}catch(e){}}},function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Template=void 0;var o=r(n(8)),i=n(1),a=function(){function e(e){var t=this;if(this.getContentZoneFromMatchedConfig=function(e){var t=window.Evergage.getState().result.matchedConfig;return e.contentZone&&t&&t.contentZones&&0!==t.contentZones.length&&t.contentZones.find((function(t){return t.name===e.contentZone}))||null},this.applyRender=function(e){var n=t.getContentZoneFromMatchedConfig(e);n&&t.executeInsertionForTarget(n,e)},this.replaceContentAtTarget=function(e,t){t.innerHTML=e},this.name=e.name,this.apply=e.apply,this.reset=e.reset,this.control=e.control,e.handlebars)try{this.generateHtml=o.default.template(e.handlebars),o.default.partials[e.name]=o.default.template(e.handlebars)}catch(e){i.dispatchError(e)}else this.generateHtml=function(){}}return e.prototype.render=function(e){try{var t=this.apply(e,this.generateHtml,this.applyRender);return i.handleTemplateDispatch(t,e),this.reset.bind(this,e,this.generateHtml)}catch(e){i.dispatchError(e)}},e.prototype.executeInsertionForTarget=function(e,t){if(this.generateHtml){var n=e.selector;try{var r=document.querySelector(n);if(!r){var o='Could not render template. Content zone "'+e.name+'" defined but the selector "'+n+'" not found on the page.';return void i.dispatchError(o)}var a=this.generateHtml(t);if(!a)return;this.replaceContentAtTarget(a,r)}catch(e){i.dispatchError(e)}}},e}();t.Template=a},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0})},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.initPreview=void 0;var r=n(2),o=n(0);t.initPreview=function(){window.Evergage.Render={render:function(e,t,n){var i=JSON.stringify({templateName:e,templateConfig:t,templates:n});window.localStorage.setItem(r.TEST_TEMPLATE_STORAGE_KEY,i),o.resetTemplate(e,t),o.executeBundles(n),o.renderTemplate(e,t)},reset:o.resetTemplate}}},function(e,t,n){"use strict";n.r(t);var r={};n.r(r),n.d(r,"extend",(function(){return u})),n.d(r,"toString",(function(){return p})),n.d(r,"isFunction",(function(){return d})),n.d(r,"isArray",(function(){return f})),n.d(r,"indexOf",(function(){return h})),n.d(r,"escapeExpression",(function(){return m})),n.d(r,"isEmpty",(function(){return g})),n.d(r,"createFrame",(function(){return v})),n.d(r,"blockParams",(function(){return E})),n.d(r,"appendContextPath",(function(){return T}));var o={};n.r(o),n.d(o,"VERSION",(function(){return x})),n.d(o,"COMPILER_REVISION",(function(){return j})),n.d(o,"LAST_COMPATIBLE_COMPILER_REVISION",(function(){return k})),n.d(o,"REVISION_CHANGES",(function(){return I})),n.d(o,"HandlebarsEnvironment",(function(){return L})),n.d(o,"log",(function(){return R})),n.d(o,"createFrame",(function(){return v})),n.d(o,"logger",(function(){return M}));var i={};n.r(i),n.d(i,"checkRevision",(function(){return D})),n.d(i,"template",(function(){return V})),n.d(i,"wrapProgram",(function(){return B})),n.d(i,"resolvePartial",(function(){return G})),n.d(i,"invokePartial",(function(){return Z})),n.d(i,"noop",(function(){return F}));const a={"&":"&","<":"<",">":">",'"':""","'":"'","`":"`","=":"="},l=/[&<>"'`=]/g,c=/[&<>"'`=]/;function s(e){return a[e]}function u(e){for(let t=1;t0?(n.ids&&(n.ids=[n.name]),e.helpers.each(t,n)):r(this);if(n.data&&n.ids){let e=v(n.data);e.contextPath=T(n.data.contextPath,n.name),n={data:e}}return o(t,n)}))}(e),function(e){e.registerHelper("each",(function(e,t){if(!t)throw new w("Must pass iterator to #each");let n,r,o=t.fn,i=t.inverse,a=0,l="";function c(t,i,a){n&&(n.key=t,n.index=i,n.first=0===i,n.last=!!a,r&&(n.contextPath=r+t)),l+=o(e[t],{data:n,blockParams:E([e[t],t],[r+t,null])})}if(t.data&&t.ids&&(r=T(t.data.contextPath,t.ids[0])+"."),d(e)&&(e=e.call(this)),t.data&&(n=v(t.data)),e&&"object"==typeof e)if(f(e))for(let t=e.length;a{void 0!==t&&c(t,a-1),t=e,a++}),void 0!==t&&c(t,a-1,!0)}return 0===a&&(l=i(this)),l}))}(e),function(e){e.registerHelper("helperMissing",(function(){if(1!==arguments.length)throw new w('Missing helper: "'+arguments[arguments.length-1].name+'"')}))}(e),function(e){e.registerHelper("if",(function(e,t){if(2!=arguments.length)throw new w("#if requires exactly one argument");return d(e)&&(e=e.call(this)),!t.hash.includeZero&&!e||g(e)?t.inverse(this):t.fn(this)})),e.registerHelper("unless",(function(t,n){if(2!=arguments.length)throw new w("#unless requires exactly one argument");return e.helpers.if.call(this,t,{fn:n.inverse,inverse:n.fn,hash:n.hash})}))}(e),function(e){e.registerHelper("log",(function(){let t=[void 0],n=arguments[arguments.length-1];for(let e=0;e=0?t:parseInt(e,10)}return e},log:function(e,...t){if(e=C.lookupLevel(e),"undefined"!=typeof console&&C.lookupLevel(C.level)<=e){let n=C.methodMap[e];console[n]||(n="log"),console[n](...t)}}};var M=C;const A=Object.create(null);function S(e,t){return void 0!==e.whitelist[t]?!0===e.whitelist[t]:void 0!==e.defaultValue?e.defaultValue:(function(e){!0!==A[e]&&(A[e]=!0,M.log("error",`Handlebars: Access has been denied to resolve the property "${e}" because it is not an "own property" of its parent.\nYou can add a runtime option to disable the check or this warning:\nSee https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`))}(t),!1)}const x="4.7.9",j=8,k=7,I={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1",7:">= 4.0.0 <4.3.0",8:">= 4.3.0"};function L(e,t,n){this.helpers=e||{},this.partials=t||{},this.decorators=n||{},b(this),O(this)}L.prototype={constructor:L,logger:M,log:M.log,registerHelper:function(e,t){if("[object Object]"===p.call(e)){if(t)throw new w("Arg not supported with multiple helpers");u(this.helpers,e)}else this.helpers[e]=t},unregisterHelper:function(e){delete this.helpers[e]},registerPartial:function(e,t){if("[object Object]"===p.call(e))u(this.partials,e);else{if(void 0===t)throw new w(`Attempting to register a partial called "${e}" as undefined`);this.partials[e]=t}},unregisterPartial:function(e){delete this.partials[e]},registerDecorator:function(e,t){if("[object Object]"===p.call(e)){if(t)throw new w("Arg not supported with multiple decorators");u(this.decorators,e)}else this.decorators[e]=t},unregisterDecorator:function(e){delete this.decorators[e]},resetLoggedPropertyAccesses(){Object.keys(A).forEach(e=>{delete A[e]})}};let R=M.log;function N(e){this.string=e}N.prototype.toString=N.prototype.toHTML=function(){return""+this.string};var H=N;function D(e){const t=e&&e[0]||1;if(!(t>=k&&t<=j)){if(t{let o=t[r];e[r]=function(e,t){const n=t.lookupProperty;return function(e,t){return"function"!=typeof e?e:function(){const n=arguments[arguments.length-1];return arguments[arguments.length-1]=t(n),e.apply(this,arguments)}}(e,e=>(e.lookupProperty=n,e))}(o,n)})}function K(){let e=new L;return u(e,o),e.SafeString=H,e.Exception=w,e.Utils=r,e.escapeExpression=m,e.VM=i,e.template=function(t){return V(t,e)},e}let Q=K();Q.create=K,function(e){"object"!=typeof globalThis&&(Object.prototype.__defineGetter__("__magic__",(function(){return this})),__magic__.globalThis=__magic__,delete Object.prototype.__magic__);const t=globalThis.Handlebars;e.noConflict=function(){return globalThis.Handlebars===e&&(globalThis.Handlebars=t),e}}(Q),Q.default=Q;t.default=Q}])); } catch (e) { if (typeof window.Evergage === "object" && typeof window.Evergage.getVersion === "function" && window.Evergage.getVersion() >= 5) { Evergage.sendException(e, "beaconExtension: Handlebars Templates:index.js"); } }; try { // syncs with @frontend/packages/ui-chrome-extension/src/constants.ts#CUSTOM_EVENT.MESSAGE_FROM_INTERACTION_STUDIO_TOOLS_GEAR var VE_CUSTOM_EVENT_NAME = 'msg_from_interaction_studio_tools_gear'; // syncs with @frontend/packages/ui-chrome-extension/src/constants.ts#EVENT_TYPE.MESSAGE_FROM_INTERACTION_STUDIO_TOOLS_GEAR var TO_LAUNCHER_MESSAGE_TYPE = 'nxve_messageFromInteractionStudioToolsGear'; var TO_LAUNCHER_PAYLOAD_TYPE = 'beaconSDK_domEvent'; function sendMessageToEvergageLauncher(message) { try { document.dispatchEvent( new CustomEvent(VE_CUSTOM_EVENT_NAME, { detail: JSON.stringify(message), }) ); } catch (e) { console.error(e); } } var eventLinkId = null; if (Evergage !== null) { document.addEventListener(Evergage.CustomEvents.OnInit, function ( domEvent ) { sendMessageToEvergageLauncher({ type: TO_LAUNCHER_MESSAGE_TYPE, payload: { type: TO_LAUNCHER_PAYLOAD_TYPE, payload: { name: Evergage.CustomEvents.OnInit, detail: domEvent.detail, }, }, }); }); document.addEventListener(Evergage.CustomEvents.OnEventSend, function ( domEvent ) { eventLinkId = Math.random().toString().slice(2); const { actionEvent } = domEvent.detail || {}; actionEvent._toolsEventLinkId = eventLinkId; if (actionEvent.interaction) { actionEvent.explain = true; } else { actionEvent.debug = Object.assign( (actionEvent.debug || {}), { explanations: true } ); } sendMessageToEvergageLauncher({ type: TO_LAUNCHER_MESSAGE_TYPE, payload: { type: TO_LAUNCHER_PAYLOAD_TYPE, payload: { name: Evergage.CustomEvents.OnEventSend, detail: domEvent.detail, }, }, }); }); document.addEventListener(Evergage.CustomEvents.OnEventResponse, function ( domEvent ) { if (domEvent.detail) { const currentPage = Evergage.getCurrentPage(); const sitemapConfig = Evergage.getState().config; const matchedPageConfig = Evergage.getState().result && Evergage.getState().result.matchedConfig; eventLinkId = null; sendMessageToEvergageLauncher({ type: TO_LAUNCHER_MESSAGE_TYPE, payload: { type: TO_LAUNCHER_PAYLOAD_TYPE, payload: { name: Evergage.CustomEvents.OnEventResponse, detail: { response: domEvent.detail.response, currentPage: currentPage, sitemapConfig: sitemapConfig, matchedPageConfig: matchedPageConfig, }, }, }, }); } }); } } catch (e) { if (typeof window.Evergage === "object" && typeof window.Evergage.getVersion === "function" && window.Evergage.getVersion() >= 5) { Evergage.sendException(e, "beaconExtension: System Tools:interactionStudioTools.js"); } }; try { Evergage.Surveys = Evergage.Surveys || (function() { var SURVEY_ACTION = { SUBMIT: "submit", PAGE_NEXT: "pageNext", PAGE_PREV: "pagePrev" }; var SURVEY_EVENT_PARAM = { SURVEY_ACTION: 'surveyAction', SURVEY_ID: 'surveyId', SURVEY_START_TIME: 'surveyStartTime' }; var initialized = false; function isInitialized() { return (initialized || typeof window.Survey === 'object'); } /** * processSurveyResponses * ** recursive ** * @param responses {object} a collection of survey element response values keyed by element.name (question.name) * @param elements {object} a collection of SurveyElements for a given page or panel of a survey * @param addResponseFn {function} invoked for each questionType element that has been processed */ function processSurveyResponses(elements, survey, sender) { try { var shouldHandleElementAsPanel = function(element) { return (element.type === 'panel' && Evergage.cashDom.isArray(element.elements) && element.elements.length !== 0 && !isString(element.questionId)); }; var formatAnswer = function(answer) { var result = (answer) ? answer : null; if (result != null && Evergage.cashDom.isArray(result) || isPlainObject(result)) { result = JSON.stringify(result); } return result; }; var formatQuestionId = function(element, rowId) { var questionId = "survey:" + survey.id + ":" + element.questionId; if (isString(rowId)) { questionId += ":" + rowId; } return questionId; }; var responses = []; for (var elementIndex = 0; elementIndex < elements.length; elementIndex++) { var element = elements[elementIndex]; if (shouldHandleElementAsPanel(element)) { responses = responses.concat(processSurveyResponses(element.elements, survey, sender)); } else { if (element.type === "matrix") { for (var rowIndex = 0; rowIndex < element.rows.length; rowIndex++) { var row = element.rows[rowIndex]; var rowId = element.rowIds[rowIndex]; var allRowsValues = sender.data[element.name] ? sender.data[element.name] : {}; if (allRowsValues[row.value]) { var rowValue = allRowsValues[row.value]; responses.push({ questionId: formatQuestionId(element, rowId), answer: rowValue }); } } } else { var answer = formatAnswer(sender.data[element.name]); if (answer) { responses.push({ questionId: formatQuestionId(element), answer: answer }); } } } } return responses; } catch (e) { Evergage.log.error('Evergage: There was an error when attempting to ' + 'process survey responses: ', e); } } function isPlainObject(obj) { if (typeof obj !== 'object' || obj === null) return false; const proto = Object.getPrototypeOf(obj); return proto === null || proto === Object.prototype; } function isString(property) { return typeof property === 'string' || property instanceof String; } function handleSurveyAction(surveyAction, survey, sender) { try { if (surveyAction === SURVEY_ACTION.PAGE_NEXT) { return; } else { var surveyActionEvent = new SurveyActionEvent(surveyAction, survey.id, new Date().getTime()); Evergage.cashDom.each(survey.config.pages, function(index, page) { surveyActionEvent.addResponses(processSurveyResponses(page.elements, survey, sender)); }); surveyActionEvent.send(); } } catch (e) { Evergage.log.error('Evergage: There was an error when attempting to ' + 'submit survey responses surveyId[' + message.surveyConfig.survey.id + ']: ', e); } } function renderSurvey(survey, renderTarget) { if (typeof survey !== "object" || !renderTarget) return Evergage.log.error("Evergage: renderSurvey arguments are not valid"); return injectSurveyResourcesIntoPage().then(() => { try { if (surveyAlreadyRendered(survey.id, renderTarget)) return; window.Survey.JsonObject.metaData.addProperty("questionbase", "questionId"); window.Survey.JsonObject.metaData.addProperty("questionbase", "rowIds"); var surveyModel = new window.Survey.Model(survey.config); // eslint-disable-next-line new-cap Evergage.cashDom(renderTarget).Survey({ model: surveyModel, onComplete: function(sender) { handleSurveyAction(SURVEY_ACTION.SUBMIT, survey, sender); }, onPartialSend: function(sender) { handleSurveyAction(SURVEY_ACTION.PAGE_NEXT, survey, sender); } }); Evergage.cashDom(renderTarget).attr("data-evg-survey-id", survey.id); } catch (e) { Evergage.log.error('Evergage: There was an error when attempting to render the survey', e); } }); } function injectSurveyResourceIntoPage(type, url) { try { var documentHead = document.head || document.getElementsByTagName('head')[0]; var isStylesheet = (type === 'style'); var surveyResourceElement = document.createElement(isStylesheet ? 'link' : 'script'); surveyResourceElement.setAttribute('type', ((isStylesheet) ? 'text/css' : 'text/javascript')); surveyResourceElement.setAttribute('class', 'evergageSurvey-' + type); surveyResourceElement.setAttribute(((isStylesheet) ? 'href' : 'src'), url); if (isStylesheet) { surveyResourceElement.setAttribute('rel', 'stylesheet'); } documentHead.appendChild(surveyResourceElement); Evergage.log.trace('Evergage: Injected survey resource of type[' + type + '] url[' + url + ']'); } catch (e) { Evergage.log.error('Evergage: There was an error when attempting to inject surveyJS resources into the page: ', e); } } function injectSurveyResourcesIntoPage() { return new Promise(resolve => { if (isInitialized()) { return resolve(); } var SURVEY_JS_CDN_BASE_URL = '//cdn.evergage.com/evergage-content/3pp'; var SURVEY_JS_VERSION = 'surveyjs-1.0.95'; var SURVEY_JS_SCRIPT_NAME = 'survey.cash.min.js'; var SURVEY_JS_STYLESHEET_NAME = 'survey.min.css'; Object.entries({ script: [SURVEY_JS_CDN_BASE_URL, SURVEY_JS_VERSION, SURVEY_JS_SCRIPT_NAME].join('/'), style: [SURVEY_JS_CDN_BASE_URL, SURVEY_JS_VERSION, SURVEY_JS_STYLESHEET_NAME].join('/') }).forEach(function(entry) { const [resourceType, resourceUrl] = entry injectSurveyResourceIntoPage(resourceType, resourceUrl); }); var interval = setInterval(function(){ if (Evergage.cashDom.fn.Survey != null && window.Survey != null) { clearInterval(interval); initialized = true; resolve(); } }, 100); }) } function surveyAlreadyRendered(surveyId, renderTarget) { return Evergage.cashDom(renderTarget).attr("data-evg-survey-id") === surveyId; } function SurveyActionEvent(surveyAction, surveyId, timestamp) { this.params = { source: {}, attributes: {} }; this.params.source[SURVEY_EVENT_PARAM.SURVEY_ACTION] = surveyAction; this.params.source[SURVEY_EVENT_PARAM.SURVEY_ID] = surveyId; this.params.source[SURVEY_EVENT_PARAM.SURVEY_START_TIME] = timestamp; } SurveyActionEvent.prototype.addResponses = function(responses) { for (var i = 0; i < responses.length; i++) { var response = responses[i]; this.addResponse(response.questionId, response.answer); } }; SurveyActionEvent.prototype.addResponse = function(name, value) { Evergage.log.trace('Evergage: Adding response to SurveyActionEvent: ' + JSON.stringify({ name: name, value: value })); this.params.attributes[name] = value; }; SurveyActionEvent.prototype.send = function() { Evergage.log.trace('Evergage: Tracking survey event: ', this.params); Evergage.sendEvent({ action: "Survey " + this.params.source[SURVEY_EVENT_PARAM.SURVEY_ACTION], source: this.params.source, user: { attributes: this.params.attributes } }); }; return { renderSurvey: renderSurvey, injectSurveyResourcesIntoPage: injectSurveyResourcesIntoPage }; })(window); if (window.SalesforceInteractions && window.SalesforceInteractions.mcis) { window.SalesforceInteractions.mcis.Surveys = Evergage.Surveys; } } catch (e) { if (typeof window.Evergage === "object" && typeof window.Evergage.getVersion === "function" && window.Evergage.getVersion() >= 5) { Evergage.sendException(e, "beaconExtension: Surveys:SurveyJS.js"); } }; try { (function () { var VE_LOCAL_STORAGE_KEY = 'evgVE'; var SITEMAP_EDITOR_LOCAL_STORAGE_KEY = 'evgVE-cdp-sitemap-editor'; var SdkNamespace = window.Evergage || window.SalesforceInteractions; function injectEditorLaunchScript(isStandaloneSitemapEditor) { try { // getConfig() is not exposed on the Salesforce/CDP build of the SDK var trackerUrl = typeof SdkNamespace.getConfig === 'function' && SdkNamespace.getConfig().trackerUrl; var baseUrl = !isStandaloneSitemapEditor && trackerUrl ? trackerUrl : 'https://cdn.evergage.com'; var scriptPath = isStandaloneSitemapEditor ? '/evergage-content/sitemap-editor/4.0.2/launch.sitemap-editor.js' : '/visual-editor/launch.js'; var scriptUrl = [baseUrl, scriptPath].join(''); var scriptTag = document.createElement('script'); scriptTag.setAttribute('id', 'salesforceInteractionsLauncherScript'); scriptTag.src = scriptUrl; // Discover CSP nonce from SDK, then fall back to scanning existing DOM elements. // This duplicates logic from utilities/src/utils.ts because gear scripts are // standalone JS and cannot import from the webpack bundle. var nonce = null; try { var discoverFn = (SdkNamespace.mcis && typeof SdkNamespace.mcis.discoverNonce === 'function' && SdkNamespace.mcis.discoverNonce) || (typeof SdkNamespace.discoverNonce === 'function' && SdkNamespace.discoverNonce); nonce = discoverFn ? discoverFn() : null; if (nonce && typeof nonce === 'string') { scriptTag.nonce = nonce; } } catch (e) { if (SdkNamespace && SdkNamespace.log && SdkNamespace.log.debug) { SdkNamespace.log.debug('Nonce SDK discovery failed, trying DOM scan', e); } } // DOM scan fallback -- read .nonce property since [nonce] attr is hidden by browsers if (!nonce) { try { var existing = document.querySelectorAll('script, style, link[rel="stylesheet"]'); for (var i = 0; i < existing.length; i++) { var n = existing[i].nonce; if (n && n !== '') { nonce = n; break; } } if (nonce) { scriptTag.nonce = nonce; } } catch (e) { if (SdkNamespace && SdkNamespace.log && SdkNamespace.log.debug) { SdkNamespace.log.debug('Nonce DOM scan failed', e); } } } if ( document.getElementById('salesforceInteractionsLauncherScript') == null ) { document.head.appendChild(scriptTag); } else { SdkNamespace.log.info('Launch script is already here.'); } } catch (err) { SdkNamespace.log.error( 'Failed to inject Salesforce Interactions Launcher script: ' + err ); } } function getUrlBoolean(name) { name = name.replace(/[\[]/, '\\[').replace(/[\]]/, '\\]'); var regex = new RegExp('[\\?&]' + name + '=([^&#]*)'); var results = regex.exec(location.search); return results === null ? null : results[1] === 'true'; } var visualEditorParam = getUrlBoolean('evergageEditor'); var standaloneEditorParam = getUrlBoolean('salesforceInteractionsSitemapEditor'); var visualEditorEnabledInStorage = function () { return window.localStorage[VE_LOCAL_STORAGE_KEY] === 'true'; }; var standloneSitemapEditorEnabledInStorage = function () { return window.localStorage[SITEMAP_EDITOR_LOCAL_STORAGE_KEY] === 'true'; }; // honor and set local storage based off queryParam if (visualEditorParam !== null) { window.localStorage.setItem(VE_LOCAL_STORAGE_KEY, visualEditorParam); } if (standaloneEditorParam !== null) { window.localStorage.setItem( SITEMAP_EDITOR_LOCAL_STORAGE_KEY, standaloneEditorParam ); } var inSiteEditorFrameContext = window.frameElement && window.frameElement.id === 'siteEditorFrame'; // trigger off of localStorage only // chrome extension reads/sets localStorage more easily than modifying the currentTab URL if ( !visualEditorEnabledInStorage() && !standloneSitemapEditorEnabledInStorage() && !inSiteEditorFrameContext ) { return; } if (window.top === window.self || inSiteEditorFrameContext) { document.addEventListener( SdkNamespace.CustomEvents.OnInit, (event) => { injectEditorLaunchScript( standloneSitemapEditorEnabledInStorage() ); event.preventDefault(); }, { once: true } ); } })(); } catch (e) { if (typeof window.Evergage === "object" && typeof window.Evergage.getVersion === "function" && window.Evergage.getVersion() >= 5) { Evergage.sendException(e, "beaconExtension: Visual Editor:visualEditor.js"); } }; try { var evgr = Evergage.resolvers; window.getCookieIS = (cname) => { let name = cname + "=" let decodedCookie = decodeURIComponent(document.cookie) let ca = decodedCookie.split(";") for (let i = 0; i < ca.length; i++) { let c = ca[i] while (c.charAt(0) == " ") { c = c.substring(1) } if (c.indexOf(name) === 0) return c.substring(name.length, c.length) } return "" } window.buildLocale = () => { let culture = utag.data.user_culture ? utag.data.user_culture : undefined; if (culture && culture.split("-").length == 2) { let language = culture ? culture.split("-")[0] : undefined; let region = culture ? culture.split("-")[1].toUpperCase() : undefined; return `${language}_${region}`; } else { undefined } } window.padTo2DigitsIS = (num) => { return num.toString().padStart(2, '0'); } window.formatDateIS = (date) => { return ([ padTo2DigitsIS(date.getDate()), padTo2DigitsIS(date.getMonth() + 1), date.getFullYear(), ].join('/') + " " + [ padTo2DigitsIS(date.getHours()), padTo2DigitsIS(date.getMinutes()) ].join(":")); } window.formatDateUTCIS = (date) => { return ([ padTo2DigitsIS(date.getUTCDate()), padTo2DigitsIS(date.getUTCMonth() + 1), date.getFullYear(), ].join('/') + " " + [ padTo2DigitsIS(date.getUTCHours()), padTo2DigitsIS(date.getUTCMinutes()) ].join(":")); } window.evergageGlobal = window.evergageGlobal || {}; // Ensure the object exists window.evergageGlobal.consentIS = true; //Páginas excluidas de funcionamiento normal window.evergageGlobal.exclusions = [ "/es-es/barcelo-films" ]; function blockPath () { var blockedPaths = window.evergageGlobal.exclusions; var currentPath = document.location.pathname; var noCoincidence = !blockedPaths.some(function (path) { return currentPath === path || currentPath.startsWith(path + "/"); }); return noCoincidence; } window.evergageGlobal.debugBlock = true; // window.evergageGlobal.debugBlock = blockPath(); /* if (window.Didomi && Didomi.getUserStatus) { // Didomi is already loaded and usable window.evergageGlobal.consentDidomi = Didomi.getUserStatus(); console.log('Didomi already ready:', window.evergageGlobal.consentDidomi); } else { // Wait for Didomi to load window.didomiOnReady = window.didomiOnReady || []; window.didomiOnReady.push(function() { window.evergageGlobal.consentDidomi = Didomi.getUserStatus(); console.log('Didomi became ready:', window.evergageGlobal.consentDidomi); }); } if (getCookieIS("user_cookie_agreement").indexOf("ux") !== -1 || (getCookieIS("didomiPurposesEnabled").indexOf("cookies") !== -1 & getCookieIS("didomiPurposesEnabled").indexOf("create_content_profile") !== -1 & getCookieIS("didomiPurposesEnabled").indexOf("select_personalized_content") !== -1 & getCookieIS("didomiPurposesEnabled").indexOf("measure_content_performance") !== -1 & getCookieIS("didomiVendorsEnabled").indexOf("salesforce") !== -1)) {window.evergageGlobal.consentIS = true} console.log("consentIS: " + window.evergageGlobal.consentIS); */ window.initInteractionStudio = () => { if (window.evergageGlobal.consentIS && window.evergageGlobal.debugBlock) Evergage.init({ cookieDomain: "barcelo.com" }).then(() => { window.sitemapConfig = { global: { locale: buildLocale, onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; const url = new URL(document.URL) // Booking Engine Market Catching actionEvent.user.attributes.marketBookingEngine = new URLSearchParams(window.location.search).get('market') ? new URLSearchParams(window.location.search).get('market') : new URLSearchParams(window.location.search).get('marketcampaign') ? new URLSearchParams(window.location.search).get('marketcampaign') : undefined // Booking Search Parameter Catching if ((utag.data.booking_check_in_date && utag.data.hotel_name) || (utag.data.booking_check_in_hyphen && utag.data.hotel_id)) { actionEvent.user.attributes.bookingAdults = utag.data.booking_adults ? utag.data.booking_adults : "" actionEvent.user.attributes.bookingBoardBasis = utag.data.booking_board_basis ? utag.data.booking_board_basis : "" actionEvent.user.attributes.bookingCheckIn = utag.data.booking_check_in_hyphen ? utag.data.booking_check_in_hyphen : "" actionEvent.user.attributes.bookingCheckOut = utag.data.booking_check_out_hyphen ? utag.data.booking_check_out_hyphen : "" actionEvent.user.attributes.bookingChildren = utag.data.booking_children ? utag.data.booking_children : "" actionEvent.user.attributes.bookingCurrency = utag.data.booking_currency ? utag.data.booking_currency.toUpperCase() : "" actionEvent.user.attributes.bookingHotel = utag.data.booking_hotel_name ? utag.data.booking_hotel_name.split(" ").map(function(word) { return (word.charAt(0).toUpperCase() + word.slice(1)) }).join(" ") : utag.data.hotel_name ? utag.data.hotel_name.split(" ").map(function(word) { return (word.charAt(0).toUpperCase() + word.slice(1))}).join(" ") : "" actionEvent.user.attributes.bookingHotelContinent = utag.data.booking_hotel_continent ? utag.data.booking_hotel_continent : "" actionEvent.user.attributes.bookingHotelId = utag.data.hotel_id ? utag.data.hotel_id : "" actionEvent.user.attributes.bookingHotelIdLastUpdatedDate = utag.data.hotel_id ? new Date().toISOString() : "" actionEvent.user.attributes.bookingPrice = utag.data.booking_price ? utag.data.booking_price : "" actionEvent.user.attributes.bookingPromotionName = utag.data.booking_coupon_name ? utag.data.booking_coupon_name : "" actionEvent.user.attributes.bookingRateName = utag.data.booking_rate_type ? utag.data.booking_rate_type : "" actionEvent.user.attributes.bookingRoomQuantity = utag.data.booking_room_quantity ? utag.data.booking_room_quantity : "" actionEvent.user.attributes.bookingRoomType = utag.data.booking_room_type ? utag.data.booking_room_type : "" actionEvent.user.attributes.bookingNights = utag.data.booking_nights ? utag.data.booking_nights : "" actionEvent.user.attributes.lastDestinationId = utag.data.destination_id ? utag.data.destination_id.toLowerCase() : utag.data.hotel_city ? "city-" + utag.data.hotel_city : utag.data.hotel_province ? "province-" + utag.data.hotel_province : utag.data.hotel_state ? "state-" + utag.data.hotel_state : utag.data.hotel_country ? "country-" + utag.data.hotel_country : undefined actionEvent.user.attributes.lastDestinationSelector = utag.data.hotel_destination ? utag.data.hotel_destination : "" } else if ((utag.data.search_check_in_date && utag.data.hotel_name && utag.data.page_section == "hotel" && utag.data.page_sub_section == "home") || (utag.data.search_value_level == "hotel (hotel lp)" && utag.data.hotel_id)) { actionEvent.user.attributes.bookingAdults = utag.data.search_adults ? utag.data.search_adults : "" actionEvent.user.attributes.bookingBoardBasis = "" actionEvent.user.attributes.bookingCheckIn = utag.data.search_check_in_hyphen ? utag.data.search_check_in_hyphen : "" actionEvent.user.attributes.bookingCheckOut = utag.data.search_check_out_hyphen ? utag.data.search_check_out_hyphen : "" actionEvent.user.attributes.bookingChildren = utag.data.search_children ? utag.data.search_children : "" actionEvent.user.attributes.bookingCurrency = utag.data.booking_currency ? utag.data.booking_currency.toUpperCase() : "" actionEvent.user.attributes.bookingHotel = utag.data.hotel_name ? utag.data.hotel_name.split(" ").map(function(word) { return (word.charAt(0).toUpperCase() + word.slice(1)) }).join(" ") : ""; actionEvent.user.attributes.bookingHotelContinent = ""; actionEvent.user.attributes.bookingHotelId = utag.data.hotel_id ? utag.data.hotel_id : utag.data.hotel_id ? utag.data.hotel_id : "" actionEvent.user.attributes.bookingHotelIdLastUpdatedDate = utag.data.search_hotel_id ? new Date().toISOString() : undefined actionEvent.user.attributes.bookingPrice = utag.data.booking_price ? utag.data.booking_price : "" actionEvent.user.attributes.bookingPromotionName = "" actionEvent.user.attributes.bookingRateName = "" actionEvent.user.attributes.bookingRoomQuantity = utag.data.search_room_quantity ? utag.data.search_room_quantity : "" actionEvent.user.attributes.bookingRoomType = "" actionEvent.user.attributes.bookingNights = utag.data.search_nights ? utag.data.search_nights : "" actionEvent.user.attributes.lastDestinationId = utag.data.destination_id ? utag.data.destination_id.toLowerCase() : utag.data.hotel_city ? "city-" + utag.data.hotel_city : utag.data.hotel_province ? "province-" + utag.data.hotel_province : utag.data.hotel_state ? "state-" + utag.data.hotel_state : utag.data.hotel_country ? "country-" + utag.data.hotel_country : undefined actionEvent.user.attributes.lastDestinationSelector = utag.data.hotel_destination ? utag.data.hotel_destination : "" } // Global User Attributes Catching actionEvent.user.id = utag.data.user_email ? utag.data.user_email : undefined actionEvent.user.attributes.emailAddressSHA256 = utag.data.user_email_sha256 ? utag.data.user_email_sha256 : undefined actionEvent.user.attributes.emailAddressMD5 = utag.data.user_hashed_email ? utag.data.user_hashed_email : url.searchParams.get("emd5") ? url.searchParams.get("emd5") : undefined actionEvent.user.attributes.sha256EmailPartyIdentificationName = actionEvent.user.attributes.emailAddressSHA256 ? "SHA256 Email Address" : undefined actionEvent.user.attributes.sha256EmailPartyIdentificationType = actionEvent.user.attributes.emailAddressSHA256 ? "Person Identifier" : undefined actionEvent.user.attributes.locale = document.domain == 'reservation.barcelo.com' ? (new URL(utag.data.page_url).searchParams.get('store') ? new URL(utag.data.page_url).searchParams.get('store').toLowerCase() : undefined) : utag.data.user_culture ? utag.data.user_culture : window.location.pathname.split("/")[1]? window.location.pathname.split("/")[1] : undefined actionEvent.user.attributes.store = document.domain == 'reservation.barcelo.com' ? (new URL(utag.data.page_url).searchParams.get('store') ? new URL(utag.data.page_url).searchParams.get('store').toLowerCase() : undefined) : utag.data.user_culture ? utag.data.user_culture : window.location.pathname.split("/")[1]? window.location.pathname.split("/")[1] : undefined actionEvent.user.attributes.language = utag.data['dom.domain'] =='reservation.barcelo.com' && utag.data["cp.CBE_language"] ? utag.data["cp.CBE_language"].split("-")[0] : utag.data.user_culture ? utag.data.user_culture.split("-")[0] : window.location.pathname.split("/")[1].split("-")[0]? window.location.pathname.split("/")[1].split("-")[0] : undefined actionEvent.user.attributes.market = document.domain == 'reservation.barcelo.com' ? utag.data.user_market_name : window.location.pathname.split("/")[1].split("-")[1] ? window.location.pathname.split("/")[1].split("-")[1].toUpperCase() : utag.data.user_selected_country ? utag.data.user_selected_country.toUpperCase() : undefined actionEvent.user.attributes.inTargetPersonalization = typeof(activityNames) != "undefined" && activityNames.find(e => e.startsWith("AB")) ? true : typeof(activityNames) != "undefined" && activityNames.find(e => e.startsWith("PERSO")) ? true : false actionEvent.user.attributes.targetActivities = typeof(activityNames) != "undefined" ? (activityNames.join(" , ").length < 1024 ? activityNames.join(" , "): undefined) : undefined actionEvent.user.attributes.globalControlGroup = typeof(split_10_90_global) != "undefined" ? (split_10_90_global === 'no_perso' ? true : split_10_90_global === 'si_perso' ? false : undefined) : undefined actionEvent.user.attributes.fitfyFiftyControlGroup = getCookieIS("split_50_50") === 'control' ? true : getCookieIS("split_50_50") === 'variación' ? false : undefined actionEvent.user.attributes.lastWebNavigationDate = formatDateIS(new Date()) actionEvent.user.attributes.lastPageVisited = utag.data.page_section ? utag.data.page_section : undefined actionEvent.user.attributes.lastURL = utag.data.page_url ? utag.data.page_url.split("?")[0] : undefined actionEvent.user.attributes.lastUTMCampaign = utag.data.page_url ? new URL(utag.data.page_url).searchParams.get('utm_campaign') : undefined actionEvent.user.attributes.lastUTMMedium = utag.data.page_url ? new URL(utag.data.page_url).searchParams.get('utm_medium') : undefined // actionEvent.user.attributes.isLogged = typeof(_satellite) !== "undefined" ? ( _satellite.getVar("user-logged") == true ? true : false) : false actionEvent.user.attributes.isLogged = utag.data.user_is_logged === "1" ? true : false actionEvent.user.attributes.mealPlanWeb = actionEvent.user.attributes.mealPlanWeb || (new URLSearchParams(window.location.search).get('mpid') ? new URLSearchParams(window.location.search).get('mpid') : undefined) actionEvent.user.attributes.lastEvent = actionEvent.action actionEvent.user.attributes.userLandingWPromocode = getCookieIS('user_landing_w_promocode') == '' ? (new URLSearchParams(window.location.search).get('codes') ? new URLSearchParams(window.location.search).get('codes') : 'promocode_false') : getCookieIS('user_landing_w_promocode') actionEvent.user.attributes.homeCheckIn = utag.data.search_check_in_hyphen ? utag.data.search_check_in_hyphen : undefined actionEvent.user.attributes.collectionHotelCategory = (utag.data.page_name === 'playa' || utag.data.page_name === 'urbanos') ? utag.data.page_name : undefined actionEvent.user.attributes.collectionTravelWith = (utag.data.page_name === 'solo-adultos' || utag.data.page_name === 'parejas' || utag.data.page_name === 'familias') ? utag.data.page_name : undefined actionEvent.user.attributes.collectionExperience = (utag.data.page_name === 'spa' || utag.data.page_name === 'bodas' || utag.data.page_name === 'golf' || utag.data.page_name === 'buceo') ? utag.data.page_name : undefined actionEvent.user.attributes.bookingConfirmationCoupon = (utag.data.page_section === "booking process" && utag.data.page_sub_section === "confirmation" && utag.data['dom.domain'] === 'reservation.barcelo.com' && utag.data.coupon) ? utag.data.coupon : undefined actionEvent.user.attributes.targetExclusion = (localStorage.getItem('targetTestUser') && localStorage.getItem('targetTestUser').toLowerCase() === 'true') ? true : false //checks user attributes console.log("locale: "+actionEvent.user.attributes.locale) console.log("market: "+actionEvent.user.attributes.market) console.log("store: "+actionEvent.user.attributes.store) console.log("language: "+actionEvent.user.attributes.language) // Survey Event Handler if (actionEvent.action == "Survey submit") { surveyDict = { OAGFQ: "Survey - Booking Completed CBE V4", AefcZ: "Survey - Exit Intent CBE v2" } actionEvent.action = "[Submit]" + surveyDict[Evergage.cashDom("#evg-surveys").attr("data-evg-survey-id")] actionEvent.source.contentZones = Evergage.getCurrentPage().source.contentZones window.surveyAttributesIS = Object.keys(actionEvent.user.attributes).filter((key) => key.indexOf('survey:') !== -1).reduce((cur, key) => { return Object.assign(cur, { [key]: actionEvent.user.attributes[key] }) }, {}); Object.entries(window.surveyAttributesIS).forEach(([key, value]) => { console.log(`${key}: ${value}`); }); if ((actionEvent.action === "[Submit]Survey - Booking Completed CBE V4") && (window.surveyAttributesIS["survey:OAGFQ:mhG2U"] || window.surveyAttributesIS["survey:OAGFQ:esV1n"] || window.surveyAttributesIS["survey:OAGFQ:9dUYk"])) { utag.link({ tealium_event: actionEvent.action, bc_tipoexperiencia: window.surveyAttributesIS["survey:OAGFQ:mhG2U"], bc_acompananteReserva: window.surveyAttributesIS["survey:OAGFQ:esV1n"], bc_expectativas: window.surveyAttributesIS["survey:OAGFQ:9dUYk"]? window.surveyAttributesIS["survey:OAGFQ:9dUYk"] : "", bc_reservationID: utag.data.order_id }); } else if ((actionEvent.action === "[Submit]Survey - Exit Intent CBE v2") && (window.surveyAttributesIS["survey:AefcZ:ee7of"] || window.surveyAttributesIS["survey:AefcZ:ZY8oh"] || window.surveyAttributesIS["survey:AefcZ:Qg8yT"] == "He tenido mala experiencia de compra durante el proceso") && (utag.data.user_email)) { utag.link({ tealium_event: actionEvent.action, bc_fuentereserva: window.surveyAttributesIS["survey:AefcZ:ee7of"], bc_additionalinfo: window.surveyAttributesIS["survey:AefcZ:ZY8oh"], bc_razonexitintent: window.surveyAttributesIS["survey:AefcZ:Qg8yT"], bc_problemaproceso: window.surveyAttributesIS["survey:AefcZ:UtZZ7"], bc_problemaweb: window.surveyAttributesIS["survey:AefcZ:U8Qz1"], bc_email: utag.data.user_email, event_action: actionEvent.action }); } } // Avoid Duplicate Bookings if (actionEvent.order && actionEvent.action.indexOf("[View]") == -1) { actionEvent.itemAction = undefined; actionEvent.order = undefined; } // Email Click Campaign IS Tracking if (actionEvent.catalog && actionEvent.catalog.Article) { //console.log(actionEvent) return actionEvent; } else { if (url.searchParams.get("is-experienceid") && !(actionEvent.campaignStats)) { if (url.searchParams.get("is-promotionid")) { Evergage.sendEvent({ source: { contentZones: ["omnichannel_promo"] }, itemAction: "Click Through", catalog: { "Promotion": { "id": url.searchParams.get("is-promotionid") } }, campaignStats: [{ experienceId: url.searchParams.get("is-experienceid"), stat: "Click", control: false, catalog: { "Promotion": [ url.searchParams.get("is-promotionid") ] } }] }) } else { if (url.searchParams.get("is-itemtype") && url.searchParams.get("is-itemtype") == "hotel") { var catalogItem = { Property: [url.searchParams.get("is-itemid")] } } else { var catalogItem = undefined } var stat = { experienceId: url.searchParams.get("is-experienceid"), stat: "Clickthrough", control: false, catalog: catalogItem } Evergage.sendStat({ campaignStats: [stat] }) } } //console.log(actionEvent) return actionEvent; } }, listeners: [ Evergage.listener("fastbooking_search", "body", () => { if (utag.data.product_id[0]){ Evergage.sendEvent({ action: "[Click]Fastbooking Search Button", itemAction: Evergage.ItemAction.Favorite, catalog: { "Property": { "id": utag.data.product_id[0] } }, user: { attributes: { bookingHotelId: utag.data.product_id[0], bookingHotelIdLastUpdatedDate : new Date().toISOString(), bookingRateName: "", bookingBoardBasis: "", bookingCheckIn: "", bookingCheckOut: "", bookingChildren: "", bookingCurrency: "", bookingHotel: "", bookingHotelContinent: "", bookingPrice: "", bookingPromotionName: "", bookingRateName: "", bookingRoomQuantity: "", bookingRoomType: "", bookingNights: "" } } }) } }), Evergage.listener("bookingengineerror", "body", (e) => { let action; if (e.detail.name.indexOf("No hay habitaciones disponibles - STEP 1") != -1) { action = "[Error]Booking Process - Step 1 - Unavailable Room" Evergage.sendEvent({ action: action, source: Evergage.getCurrentPage().source }) } else if (e.detail.name.indexOf("credit card error in step 3: generic card error") != -1) { action = "[Error]Booking Process - Step 3 - Credit Card" Evergage.sendEvent({ action: action, source: Evergage.getCurrentPage().source }) } else if (e.detail.name.indexOf("Error after Payment Page") != -1) { action = "[Error]CBE Booking Process - Payment" modifiedSource= Object.assign({}, Evergage.getCurrentPage().source) modifiedSource.contentZones = [...Evergage.getCurrentPage().source.contentZones, "error_widget"] Evergage.sendEvent({ action: action, source: modifiedSource }) } /* else if ((e.detail.name.indexOf("credit card error in step 3: generic card error")!= -1) && (erroresTarjetaCount == 1)){ action= "[Error]Booking Process - Step 3 - Credit Card" Evergage.sendEvent({ action: action, source: Evergage.getCurrentPage().source }) } */ }), Evergage.listener("coupon_error", "body", (e) => { let action; let source= Evergage.getCurrentPage().source source.url = document.URL action = "[Error]CBE Booking Process - Coupon" Evergage.sendEvent({ action: action, source: source }) }) ], contentZones: [{ name: "global_popup", selector: "body" }, { name: "global_widget", selector: "body" }, { name: "global_survey", selector: "body" }, { name: "global_control_group", selector: "body" }, { name: "global_utag_link", selector: "body" }, { name: "global_is_cookie_id", selector: "body" }, { name: "global_inspire_me", selector: "body" }, { name: "global_inspire_me_recs", selector: "#inspirame-recomendacion" }, { name: "global_megamenu_inspiration", selector: ".c-megamenu__submenu div.launcher.design-base.aem-GridColumn [id*=_modules_header_inspiration]" }, { name: "global_inspireme_recs", selector: "#evg-inspirame-popup #step-7 .evg-main-panel" }, { name: "global_my_barcelo_tooltip", selector: ".c-aside-menu-user-item.js-item-myBarcelo" }, { name: "global_popup_nologged", selector: "body" }, { name: "global_popup_logged", selector: "body" }, { name: "global_RED", selector: "body" } ] }, pageTypeDefault: { name: "default" }, pageTypes: [{ name: "homepage", action: "[View]Home", isMatch: () => utag.data.page_section == "home" && utag.data.page_sub_section == "home", listeners: [ Evergage.listener("click", ".c-cta.preStay_see-hotel_c-cta-secondary", () => { Evergage.sendEvent({ action: "[Click]See Hotel PreStay Button", source: Evergage.getCurrentPage().source }) }) ], contentZones: [{ name: "global_herobanner", selector: ".heroslider" }, { name: "home_recs", selector: ".c-container[id=home_jcr_content_root_responsivegrid_generic_container] .c-container__grid-wrapper" }, { name: "home_market_targeting", selector: "#home_jcr_content_root_responsivegrid_generic_container > div > div > div:nth-child(2)" }, { name: "home_int_recs", selector: ".c-container[id=home_jcr_content_root_responsivegrid_generic_container]" }, { name: "home_widget_preDataCollect", selector: "body" } ] }, { name: "collection_page", isMatch: () => utag.data.page_section == "collections" && utag.data.page_sub_section == "category" && utag.data.search_value, action: "[View]Collection", itemAction: Evergage.ItemAction.ViewItemDetail, catalog: { Collection: { _id: () => utag.data.search_value, name: () => Evergage.cashDom(".c-heroslider__central-block_titles_title").text().trim(), url: Evergage.resolvers.fromHref(url => url.split("?")[0]), imageUrl: () => Evergage.cashDom(".heroslider.carousel .cmp-image__image")[0] ? Evergage.cashDom(".heroslider.carousel .cmp-image__image")[0].src : undefined, description: () => utag.data['meta.description'] } }, contentZones: [{ name: "main_clustering_collection_lp", selector: ".container-fastbooking-hero-JS" } ] }, { name: "collection_hotel_page", isMatch: () => utag.data.page_section == "collection" && utag.data.page_sub_section, action: "[View]Collection Hotel", contentZones: [{ name: "main_clustering_collection_lp", selector: ".container-fastbooking-hero-JS" } ] }, { name: "hotel_page", action: "[View]Hotel", isMatch: () => (utag.data.page_section == "hotel" || utag.data.page_section == "hotel-resort" || utag.data.page_section == "corales resort") && utag.data.page_sub_section == "home" && utag.data.hotel_id !== undefined , onActionEvent: (actionEvent) => { if (actionEvent.catalog && actionEvent.catalog.Article) { var contentZoneCopy = actionEvent.source.contentZones; var actionEvent2 = Object.assign({}, actionEvent); actionEvent2.catalog = { "Property": actionEvent.catalog.Article } actionEvent2.source.contentZones = [] Evergage.sendEvent(actionEvent2) actionEvent.source.contentZones = contentZoneCopy } actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; actionEvent.user.attributes.offerManagerHotelDestinationId = "notused"; return actionEvent; }, catalog: { Article: { _id: () => utag.data.hotel_id, name: () => utag.data.hotel_name ? utag.data.hotel_name.toUpperCase() : undefined, url: Evergage.resolvers.fromHref(url => url.split("?")[0]), description: () => utag.data["meta.description"] } }, contentZones: [{ name: "hotel_promo", selector: ".c-hotel-detail__aside" }, { name: "omnichannel_promo", selector: ".c-hotel-detail__aside" }, { name: "hotel_meal_plan", selector: ".c-hotel-detail__aside" }, { name: "hotel_herobanner", selector: ".c-heroslider" }, { name: "hotel_info", selector: ".c-head-hotel-info__info" }, { name: "hotel_smallBanner", // selector: ".heroslider" selector: ".head-hotel-info" }, { name: "hotel_ribbon_herobanner", selector: "body" } ] }, { name: "room_page", action: "[View]Room", isMatch: () => utag.data.page_section == "hotel" && utag.data.page_sub_section == "room" && utag.data.hotel_id !== undefined && Evergage.cashDom("button[data-roomcode]").length > 0, catalog: { Product: { _id: () => Evergage.cashDom("button[data-roomcode]").attr("data-roomcode") + "_" + utag.data.hotel_id, url: Evergage.resolvers.fromHref(url => url.split("?")[0]), imageUrl: () => Evergage.cashDom("script[type='application/ld+json']").length > 2 ? JSON.parse(Evergage.cashDom("script[type='application/ld+json']")[2].text).photo ? JSON.parse(Evergage.cashDom("script[type='application/ld+json']")[2].text).photo.name : undefined : undefined, price: () => parseFloat(Evergage.cashDom(".c-header-detail__booking-price-quantity .c-price__value-JS").text()), currency: () => utag.data.user_selected_currency ? utag.data.user_selected_currency.toUpperCase() : undefined } } }, { name: "gallery_page", action: "[View]Gallery", isMatch: () => utag.data.page_section == "hotel" && utag.data.page_sub_section == "gallery" }, { name: "services_page", action: "[View]Services", isMatch: () => utag.data.page_section == "hotel" && utag.data.page_sub_section == "services" && utag.data.hotel_id !== undefined }, { name: "booking_page_step_1", action: "[View]Booking Process - Step 1 - Room Selection", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "room selection (step 1)" && utag.data.booking_engine == "SBE", onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("segment"); let mealPlanWebCleaned = mealPlanWeb == "ALL INCLUSIVE" ? "AI" : mealPlanWeb == "BED AND BREAKFAST" ? "BB" : mealPlanWeb == "FULL BOARD" ? "FB" : mealPlanWeb == "HALF BOARD" ? "HB" : mealPlanWeb == "ROOM ONLY" ? "RO" : mealPlanWeb == "PLUS ALL INCL" ? "AIPL" : mealPlanWeb == "ALL INCLUSIVE PREMIUM" ? "AIPR" : undefined; let lastBookingRatePlanCode = utag.data.booking_rate_code ? utag.data.booking_rate_code.split(",")[ utag.data.booking_rate_code.split(",").length - 1].split("LOCAL")[0] : undefined let lastBookingBoardBasis = lastBookingRatePlanCode ? (lastBookingRatePlanCode.endsWith("AI") ? "AI" : lastBookingRatePlanCode.endsWith("BB") ? "BB" : lastBookingRatePlanCode.endsWith("FB") ? "FB" : lastBookingRatePlanCode.endsWith("HB") ? "HB" : lastBookingRatePlanCode.endsWith("RO") ? "RO" : lastBookingRatePlanCode.endsWith("AIPL") ? "AIPL" : lastBookingRatePlanCode.endsWith("AIPR") ? "AIPR" : undefined) : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; return actionEvent; }, listeners: [ Evergage.listener("click", ".thumb-cards_button", (e) => { var regex = /[+-]?\d+(\.\d+)?/g; lineItem = { _id: e.target.closest(".thumb-cards_byRoom").getAttribute("data-room-code") + "_" + utag.data.hotel_id, price: parseFloat(e.target.closest(".thumb-cards_byRoom").parentNode.querySelectorAll(".thumb-cards_price span")[1].innerHTML.match(regex)[0]) * utag.data.booking_nights, quantity: 1 } Evergage.sendEvent({ action: "[Click]Book Now Button", itemAction: Evergage.ItemAction.AddToCart, cart: { singleLine: { Product: lineItem } } }) }), Evergage.listener("click", ".resume-cart-modal_footer .btn.button_link", (e) => { Evergage.sendEvent({ action: "[Click]Discard Booking Button", itemAction: Evergage.ItemAction.ViewCart, cart: { complete: { Product: [] } } }) }), Evergage.listener("bookingengineerror", "body", (e) => { console.log(e) }) ], contentZones: [{ name: "error_widget", selector: "body" }, { name: "sbe_my_barcelo_tooltip", selector: ".myaccount-container_container" } ] }, { name: "booking_page_step_2", action: "[View]Booking Process - Step 2 - Extra Selection", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "extra selection (step 2)" && utag.data.booking_engine == "SBE", onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("segment"); let mealPlanWebCleaned = mealPlanWeb == "ALL INCLUSIVE" ? "AI" : mealPlanWeb == "BED AND BREAKFAST" ? "BB" : mealPlanWeb == "FULL BOARD" ? "FB" : mealPlanWeb == "HALF BOARD" ? "HB" : mealPlanWeb == "ROOM ONLY" ? "RO" : mealPlanWeb == "PLUS ALL INCL" ? "AIPL" : mealPlanWeb == "ALL INCLUSIVE PREMIUM" ? "AIPR" : undefined; let lastBookingRatePlanCode = utag.data.booking_rate_code ? utag.data.booking_rate_code.split(",")[ utag.data.booking_rate_code.split(",").length - 1].split("LOCAL")[0] : undefined let lastBookingBoardBasis = lastBookingRatePlanCode ? (lastBookingRatePlanCode.endsWith("AI") ? "AI" : lastBookingRatePlanCode.endsWith("BB") ? "BB" : lastBookingRatePlanCode.endsWith("FB") ? "FB" : lastBookingRatePlanCode.endsWith("HB") ? "HB" : lastBookingRatePlanCode.endsWith("RO") ? "RO" : lastBookingRatePlanCode.endsWith("AIPL") ? "AIPL" : lastBookingRatePlanCode.endsWith("AIPR") ? "AIPR" : undefined) : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; if (actionEvent.itemAction === undefined && utag.data.booking_room_type_id) { var arrayItems = []; for (var i in utag.data.booking_room_type_id.split(",")) { arrayItems.push({ _id: utag.data.booking_room_type_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_room_price.split(",")[i]), quantity: 1 }); } if (utag.data.booking_extras_id) { for (var i in utag.data.booking_extras_id.split(",")) { arrayItems.push({ _id: utag.data.booking_extras_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_extras_price.split(",")[i]), quantity: 1 }); } } actionEvent.itemAction = Evergage.ItemAction.ViewCart actionEvent.cart = { complete: { Product: arrayItems } } } else if (actionEvent.itemAction && actionEvent.itemAction === "View Item") { actionEvent.source = actionEvent.source || {}; actionEvent.source.locale = buildLocale(); } return actionEvent }, listeners: [ Evergage.listener("click", "body", (e) => { let cartaction = false; var regex = /[+-]?\d+(\.\d+)?/g; if (Evergage.cashDom(".add-ons-details_container .btn.button_btn.button_primary.button_sm")) { for (let i = 0; i < Evergage.cashDom(".add-ons-details_container .btn.button_btn.button_primary.button_sm").length; i++) { if (Evergage.cashDom(".add-ons-details_container .btn.button_btn.button_primary.button_sm")[i].contains(e.target)) { var quantity = parseInt(e.target.closest(".add-ons-container_addOn").querySelectorAll(".quantity-selection_wrapper input")[0].value) lineItem = { _id: e.target.closest(".add-ons-container_addOn").getAttribute("data-package-code").toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(e.target.closest(".add-ons-container_addOn").querySelectorAll(".add-on-price-breakdown_price")[0].innerHTML.match(regex)[0]) / quantity, quantity: quantity } Evergage.sendEvent({ action: "[Click]Add To Booking", itemAction: Evergage.ItemAction.AddToCart, cart: { singleLine: { Product: lineItem } } }) cartaction = true; } } } if (!cartaction) { for (let i = 0; i < Evergage.cashDom(".add-ons-container_group .btn.button_btn.button_primary.button_sm").length; i++) { if (Evergage.cashDom(".add-ons-container_group .btn.button_btn.button_primary.button_sm")[i].contains(e.target)) { Evergage.sendEvent({ action: "[Click]I'm Interested Button", itemAction: Evergage.ItemAction.ViewItem, catalog: { Product: { _id: e.target.closest(".add-ons-container_addOn").getAttribute("data-package-code").toUpperCase() + "_" + utag.data.hotel_id, name: e.target.closest(".add-ons-container_addOn .add-ons-container_addOnInfo").querySelectorAll(".add-ons-container_addOnDetails .app_heading1")[0].innerText, url: "https://www.barcelo.com", imageUrl: e.target.closest(".add-ons-container_addOn").querySelectorAll(".add-ons-container_addOnImgWrapper img")[0].getAttribute("src"), description: e.target.closest(".add-ons-container_addOn .add-ons-container_addOnInfo").querySelectorAll(".add-ons-container_addOnDetails .add-ons-container_addOnDescription")[0].innerText, price: e.target.closest(".add-ons-container_addOn").querySelectorAll(".add-ons-thumb-card-price_price")[0].innerHTML.match(regex)[0], currency: utag.data.currency.toUpperCase(), categories: ["ANCILLARIES" + "|" + e.target.closest(".add-ons-container_categoryGroup").getAttribute("data-category-group-code").toUpperCase()], relatedCatalogObjects: { Property: [utag.data.hotel_id] } } } }) } } for (let i = 0; i < Evergage.cashDom(".add-ons-container_group .add-ons-container_viewMoreButton .btn.button_link").length; i++) { if (Evergage.cashDom(".add-ons-container_group .add-ons-container_viewMoreButton .btn.button_link")[i].contains(e.target) && Evergage.cashDom(".add-ons-container_group .add-ons-container_viewMoreButton .btn.button_link")[i].querySelectorAll(".button_arrowUpAfter").length == 0) { Evergage.sendEvent({ action: "[Click]View More Button", itemAction: Evergage.ItemAction.ViewItem, catalog: { Product: { _id: e.target.closest(".add-ons-container_addOn").getAttribute("data-package-code").toUpperCase() + "_" + utag.data.hotel_id, name: e.target.closest(".add-ons-container_addOn .add-ons-container_addOnInfo").querySelectorAll(".add-ons-container_addOnDetails .app_heading1")[0].innerText, url: "https://www.barcelo.com", imageUrl: e.target.closest(".add-ons-container_addOn").querySelectorAll(".add-ons-container_addOnImgWrapper img")[0].getAttribute("src"), price: e.target.closest(".add-ons-container_addOn").querySelectorAll(".add-ons-thumb-card-price_price")[0].innerHTML.match(regex)[0], currency: utag.data.currency.toUpperCase(), categories: ["ANCILLARIES" + "|" + e.target.closest(".add-ons-container_categoryGroup").getAttribute("data-category-group-code").toUpperCase()], relatedCatalogObjects: { Property: [utag.data.hotel_id] } } } }) } } } }) ] }, { name: "booking_page_step_3", action: "[View]Booking Process - Step 3 - Personal Data", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "personal data (step 3)" && utag.data.booking_engine == "SBE", onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("segment"); let mealPlanWebCleaned = mealPlanWeb == "ALL INCLUSIVE" ? "AI" : mealPlanWeb == "BED AND BREAKFAST" ? "BB" : mealPlanWeb == "FULL BOARD" ? "FB" : mealPlanWeb == "HALF BOARD" ? "HB" : mealPlanWeb == "ROOM ONLY" ? "RO" : mealPlanWeb == "PLUS ALL INCL" ? "AIPL" : mealPlanWeb == "ALL INCLUSIVE PREMIUM" ? "AIPR" : undefined; let lastBookingRatePlanCode = utag.data.booking_rate_code ? utag.data.booking_rate_code.split(",")[ utag.data.booking_rate_code.split(",").length - 1].split("LOCAL")[0] : undefined let lastBookingBoardBasis = lastBookingRatePlanCode ? (lastBookingRatePlanCode.endsWith("AI") ? "AI" : lastBookingRatePlanCode.endsWith("BB") ? "BB" : lastBookingRatePlanCode.endsWith("FB") ? "FB" : lastBookingRatePlanCode.endsWith("HB") ? "HB" : lastBookingRatePlanCode.endsWith("RO") ? "RO" : lastBookingRatePlanCode.endsWith("AIPL") ? "AIPL" : lastBookingRatePlanCode.endsWith("AIPR") ? "AIPR" : undefined) : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; if (actionEvent.action !== "[Error]Booking Process - Step 3 - Credit Card" && utag.data.booking_room_type_id ) { var arrayItems = []; for (var i in utag.data.booking_room_type_id.split(",")) { arrayItems.push({ _id: utag.data.booking_room_type_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_room_price.split(",")[i]), quantity: 1 }); } if (utag.data.booking_extras_id) { for (var i in utag.data.booking_extras_id.split(",")) { arrayItems.push({ _id: utag.data.booking_extras_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_extras_price.split(",")[i]), quantity: 1 }); } } actionEvent.itemAction = Evergage.ItemAction.ViewCart actionEvent.cart = { complete: { Product: arrayItems } } } return actionEvent }, contentZones: [{ name: "error_widget", selector: "body" }] }, { name: "booking_page_step_3-4", action: "[View]Booking Process - Step 3-4 - Review", isMatch: () => document.URL.indexOf("booking.barcelo.com/review?") != -1, contentZones: [{ name: "error_widget", selector: "body" }] }, { name: "booking_page_step_4", action: "[View]Booking Process - Step 4 - Confirmation", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "confirmation (step 4)" && utag.data.booking_engine == "SBE", /* onActionEvent: (actionEvent) =>{ actionEvent.itemAction= Evergage.ItemAction.ViewCart actionEvent.cart={ complete: { Product: [] } } return actionEvent } */ onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; actionEvent.user.attributes.bookingItineraryNumber = typeof(_globalTracking) != "undefined" ? (_globalTracking.ItineraryNo ? _globalTracking.ItineraryNo : "" ) : (utag.data["qp.itineraryNumber"] ? utag.data["qp.itineraryNumber"] : ""); let mealPlanWeb = new URLSearchParams(window.location.search).get("segment"); let mealPlanWebCleaned = mealPlanWeb == "ALL INCLUSIVE" ? "AI" : mealPlanWeb == "BED AND BREAKFAST" ? "BB" : mealPlanWeb == "FULL BOARD" ? "FB" : mealPlanWeb == "HALF BOARD" ? "HB" : mealPlanWeb == "ROOM ONLY" ? "RO" : mealPlanWeb == "PLUS ALL INCL" ? "AIPL" : mealPlanWeb == "ALL INCLUSIVE PREMIUM" ? "AIPR" : undefined; let lastBookingRatePlanCode = utag.data.booking_rate_code ? utag.data.booking_rate_code.split(",")[ utag.data.booking_rate_code.split(",").length - 1].split("LOCAL")[0] : undefined let lastBookingBoardBasis = lastBookingRatePlanCode ? (lastBookingRatePlanCode.endsWith("AI") ? "AI" : lastBookingRatePlanCode.endsWith("BB") ? "BB" : lastBookingRatePlanCode.endsWith("FB") ? "FB" : lastBookingRatePlanCode.endsWith("HB") ? "HB" : lastBookingRatePlanCode.endsWith("RO") ? "RO" : lastBookingRatePlanCode.endsWith("AIPL") ? "AIPL" : lastBookingRatePlanCode.endsWith("AIPR") ? "AIPR" : undefined) : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; var arrayItems = []; for (var i in utag.data.booking_room_type_id.split(",")) { arrayItems.push({ _id: utag.data.booking_room_type_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_room_price.split(",")[i]), quantity: 1 }); } if (utag.data.booking_extras_id) { for (var i in utag.data.booking_extras_id.split(",")) { arrayItems.push({ _id: utag.data.booking_extras_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_extras_price.split(",")[i]), quantity: 1 }); } } actionEvent.itemAction = Evergage.ItemAction.Purchase actionEvent.order = { Product: { orderId: _globalTracking.ItineraryNo, lineItems: arrayItems, currency: utag.data.currency.toUpperCase() } } return actionEvent }, contentZones: [{ name: "sbe_my_barcelo_tooltip", selector: ".myaccount-container_container" }] }, { name: "cbe_booking_page_room_selection", action: "[View]CBE Booking Process - Room Selection", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "room selection" && utag.data['dom.domain'] =='reservation.barcelo.com', onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("mealplans") ; let mealPlanWebCleaned = mealPlanWeb ? mealPlanWeb.split("|")[mealPlanWeb.split("|").length - 1] : undefined let bookingBoardBasisArray = utag.data.booking_board_basis && utag.data.booking_board_basis != "" ? utag.data.booking_board_basis.split(',') : undefined; let lastBookingBoardBasis = bookingBoardBasisArray && bookingBoardBasisArray.length > 0 ? bookingBoardBasisArray[bookingBoardBasisArray.length - 1] : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; return actionEvent }, listeners: [ Evergage.listener("click", "body", (e) => { if (e.target.closest(".Room_container__RjIVi .Button_button__ZZ8IA")) { lineItem = { _id: e.target.closest("article.Room_container__RjIVi").getAttribute("data-room-code") + "_" + utag.data.hotel_id, price: parseFloat(e.target.closest('.Button_button__ZZ8IA').getAttribute('data-target-price')), quantity: 1 } Evergage.sendEvent({ action: "[Click]CBE Book Now Button", itemAction: Evergage.ItemAction.AddToCart, cart: { singleLine: { Product: lineItem } } }) } }) /* Evergage.listener("click", ".Button_button__ZZ8IA", (e) => { lineItem = { _id: e.target.closest("article.Room_container__RjIVi").getAttribute("data-room-code") + "_" + utag.data.hotel_id, price: parseFloat(e.target.closest('.Button_button__ZZ8IA').getAttribute('data-target-price')), quantity: 1 } Evergage.sendEvent({ action: "[Click]CBE Book Now Button", itemAction: Evergage.ItemAction.AddToCart, cart: { singleLine: { Product: lineItem } } }) }) */ ], contentZones: [{ name: "error_widget", selector: "body" }, { name: "error_coupon_popup", selector: "body" }, { name: "trigger_popup", selector: "body" }, { name: "cbe_mobile_my_barcelo_tooltip", selector: ".Header_content__gOOgL nav ul:nth-of-type(1) li:last-of-type" }, { name: "cbe_desktop_my_barcelo_tooltip", selector: ".Header_content__gOOgL nav ul:nth-of-type(2) li:last-of-type" }, { name: "pricing_flexible", selector: "body" } ] }, { name: "cbe_booking_page_extra_selection", action: "[View]CBE Booking Process - Extra Selection", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "extra selection" && utag.data['dom.domain'] =='reservation.barcelo.com', onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("mealplans") ; let mealPlanWebCleaned = mealPlanWeb ? mealPlanWeb.split("|")[mealPlanWeb.split("|").length - 1] : undefined let bookingBoardBasisArray = utag.data.booking_board_basis && utag.data.booking_board_basis != "" ? utag.data.booking_board_basis.split(',') : undefined; let lastBookingBoardBasis = bookingBoardBasisArray && bookingBoardBasisArray.length > 0 ? bookingBoardBasisArray[bookingBoardBasisArray.length - 1] : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; return actionEvent }, listeners: [ /* Evergage.listener("click", ".Modal_container__ewUf8 .Button_button__ZZ8IA", (e) => { var regex = /[+-]?\d+(\.\d+)?/g; for (let i = 0; i < Evergage.cashDom(".add-ons-details_container .btn.button_btn.button_primary.button_sm").length; i++) { //var quantity = parseInt(e.target.closest(".add-ons-container_addOn").querySelectorAll(".quantity-selection_wrapper input")[0].value) lineItem = { _id: e.target.closest(".add-ons-container_addOn").getAttribute("data-package-code").toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(e.target.closest(".add-ons-container_addOn").querySelectorAll(".add-on-price-breakdown_price")[0].innerHTML.match(regex)[0]) / quantity, quantity: 1 } Evergage.sendEvent({ action: "[Click]Add To Booking", itemAction: Evergage.ItemAction.AddToCart, cart: { singleLine: { Product: lineItem } } }) } }), Evergage.listener("click", ".Extra_extra__QJwCO", (e) => { Evergage.sendEvent({ action: "[Click]Know More Button", itemAction: Evergage.ItemAction.ViewItem, catalog: { Product: { _id: e.target.closest('.Extra_extra__QJwCO').getAttribute("data-target-extra-id").toUpperCase() + "_" + utag.data.hotel_id, name: e.target.closest('.Extra_extra__QJwCO').querySelector(".Extra_imageContainer__raxVo img").getAttribute("alt"), url: "https://www.barcelo.com", imageUrl: 'https://reservation.barcelo.com'+e.target.closest('.Extra_extra__QJwCO').querySelector(".Extra_imageContainer__raxVo img").getAttribute("srcset"), description: '', price: parseInt(e.target.closest('.Extra_extra__QJwCO').querySelectorAll(".Extra_info__enxvv .Price_container__MSwmL span")[0].innerHTML), currency: utag.data.currency.toUpperCase(), relatedCatalogObjects: { Property: [utag.data.hotel_id] } } } }) }) */ Evergage.listener("click", ".Extra_extra__QJwCO", (e) => { Evergage.sendEvent({ action: "[Click]View More Card", itemAction: Evergage.ItemAction.ViewItem, catalog: { Product: { _id: e.target.closest('.Extra_extra__QJwCO').getAttribute("data-target-extra-id").toUpperCase() + "_" + utag.data.hotel_id, name: e.target.closest('.Extra_extra__QJwCO').querySelector(".Extra_imageContainer__raxVo img").getAttribute("alt"), url: "https://www.barcelo.com", imageUrl: 'https://reservation.barcelo.com'+e.target.closest('.Extra_extra__QJwCO').querySelector(".Extra_imageContainer__raxVo img").getAttribute("srcset"), description: '', price: e.target.closest('.Extra_extra__QJwCO').querySelectorAll(".Extra_info__enxvv .Price_container__MSwmL span")[0] ? parseInt(e.target.closest('.Extra_extra__QJwCO').querySelectorAll(".Extra_info__enxvv .Price_container__MSwmL span")[0].innerHTML) : 0, currency: utag.data.currency.toUpperCase(), categories: ["ANCILLARIES"], relatedCatalogObjects: { Property: [utag.data.hotel_id] } } } }) }) ] }, { name: "cbe_booking_page_personal_data", action: "[View]CBE Booking Process - Personal Data", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "personal data" && utag.data['dom.domain'] =='reservation.barcelo.com', onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("mealplans") ; let mealPlanWebCleaned = mealPlanWeb ? mealPlanWeb.split("|")[mealPlanWeb.split("|").length - 1] : undefined let bookingBoardBasisArray = utag.data.booking_board_basis && utag.data.booking_board_basis != "" ? utag.data.booking_board_basis.split(',') : undefined; let lastBookingBoardBasis = bookingBoardBasisArray && bookingBoardBasisArray.length > 0 ? bookingBoardBasisArray[bookingBoardBasisArray.length - 1] : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; if (utag.data.booking_room_type_id && utag.data.hotel_id && utag.data.booking_room_price){ if (utag.data.booking_room_type_id.split(',').length > 0){ var arrayItems = []; for (var i in utag.data.booking_room_type_id.split(",")) { if (typeof(utag.data.booking_room_type_id[i]) == "string") { arrayItems.push({ _id: utag.data.booking_room_type_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_room_price.split(",")[i]), quantity: 1 }); } } if ((utag.data.booking_extras_id && (utag.data.booking_extras_id.length > 0)) && (utag.data.booking_extras_price && (utag.data.booking_extras_price.length > 0))) { for (var i in utag.data.booking_extras_id) { if (typeof(utag.data.booking_extras_id[i]) == "string") { arrayItems.push({ _id: utag.data.booking_extras_id[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_extras_price[i]) / utag.data.booking_extras_units[i], quantity: utag.data.booking_extras_units[i] }); } } } if (arrayItems.length > 0) { actionEvent.itemAction= Evergage.ItemAction.ViewCart actionEvent.cart={ complete: { Product: arrayItems } } } } } return actionEvent }, contentZones: [{ name: "error_coupon_popup", selector: "body" }, { name: "trigger_popup", selector: "body" } ] }, { name: "cbe_booking_page_payment_details", action: "[View]CBE Booking Process - Payment Details", isMatch: () => utag.data.page_section == "booking process" && utag.data.page_sub_section == "payment details" && utag.data['dom.domain'] =='reservation.barcelo.com', onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("mealplans") ; let mealPlanWebCleaned = mealPlanWeb ? mealPlanWeb.split("|")[mealPlanWeb.split("|").length - 1] : undefined let bookingBoardBasisArray = utag.data.booking_board_basis && utag.data.booking_board_basis != "" ? utag.data.booking_board_basis.split(',') : undefined; let lastBookingBoardBasis = bookingBoardBasisArray && bookingBoardBasisArray.length > 0 ? bookingBoardBasisArray[bookingBoardBasisArray.length - 1] : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; if (utag.data.booking_room_type_id && utag.data.hotel_id && utag.data.booking_room_price){ if (utag.data.booking_room_type_id.split(',').length > 0){ var arrayItems = []; for (var i in utag.data.booking_room_type_id.split(",")) { if (typeof(utag.data.booking_room_type_id[i]) == "string") { arrayItems.push({ _id: utag.data.booking_room_type_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_room_price.split(",")[i]), quantity: 1 }); } } if ((utag.data.booking_extras_id && (utag.data.booking_extras_id.length > 0)) && (utag.data.booking_extras_price && (utag.data.booking_extras_price.length > 0))) { for (var i in utag.data.booking_extras_id) { if (typeof(utag.data.booking_extras_id[i]) == "string") { arrayItems.push({ _id: utag.data.booking_extras_id[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_extras_price[i]) / utag.data.booking_extras_units[i], quantity: utag.data.booking_extras_units[i] }); } } } if (arrayItems.length > 0) { actionEvent.itemAction= Evergage.ItemAction.ViewCart actionEvent.cart={ complete: { Product: arrayItems } } } } } if (!window.isPaymentErrorObserverActive) { window.isPaymentErrorObserverActive = true; const observer = new MutationObserver(() => { const errorContainer = document.querySelector(".Alert_alert__b_2Wp.Alert_error__tIC_e.mb-l"); if (errorContainer) { if (!window.hasSentPaymentErrorEvent) { window.hasSentPaymentErrorEvent = true; Evergage.sendEvent({ action: "[Error]CBE Booking Process - Payment", source: Evergage.getCurrentPage().source }); } } else { window.hasSentPaymentErrorEvent = false; } }); observer.observe(document.body, { childList: true, subtree: true }); } return actionEvent }, contentZones: [{ name: "error_widget", selector: "body" }, { name: "error_coupon_popup", selector: "body" }, { name: "trigger_popup", selector: "body" } ] }, { name: "cbe_booking_page_confirmation", action: "[View]CBE Booking Process - Confirmation", isMatch: () => { console.log("=== [Salesforce Personalization Debug] ==="); console.log("page_section:", utag.data.page_section); console.log("page_sub_section:", utag.data.page_sub_section); console.log("dom.domain:", utag.data['dom.domain']); console.log("bookingHotelId:", utag.data.hotel); return utag.data.page_section === "booking process" && utag.data.page_sub_section === "confirmation" && utag.data['dom.domain'] === 'reservation.barcelo.com'; }, onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; let mealPlanWeb = new URLSearchParams(window.location.search).get("mealplans") ; let mealPlanWebCleaned = mealPlanWeb ? mealPlanWeb.split("|")[mealPlanWeb.split("|").length - 1] : undefined let bookingBoardBasisArray = utag.data.booking_board_basis && utag.data.booking_board_basis != "" ? utag.data.booking_board_basis.split(',') : undefined; let lastBookingBoardBasis = bookingBoardBasisArray && bookingBoardBasisArray.length > 0 ? bookingBoardBasisArray[bookingBoardBasisArray.length - 1] : undefined actionEvent.user.attributes.mealPlanWeb = lastBookingBoardBasis ? lastBookingBoardBasis : mealPlanWebCleaned; if (utag.data.booking_room_type_id && utag.data.hotel_id && utag.data.booking_room_price){ if (utag.data.booking_room_type_id.split(',').length > 0){ var arrayItems = []; for (var i in utag.data.booking_room_type_id.split(",")) { if (typeof(utag.data.booking_room_type_id[i]) == "string") { arrayItems.push({ _id: utag.data.booking_room_type_id.split(",")[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_room_price.split(",")[i]), quantity: 1 }); } } if ((utag.data.booking_extras_id && (utag.data.booking_extras_id.length > 0)) && (utag.data.booking_extras_price && (utag.data.booking_extras_price.length > 0))) { actionEvent.user.attributes.bookingExtras = "extras"; for (var i in utag.data.booking_extras_id) { if (typeof(utag.data.booking_extras_id[i]) == "string") { arrayItems.push({ _id: utag.data.booking_extras_id[i].toUpperCase() + "_" + utag.data.hotel_id, price: parseFloat(utag.data.booking_extras_price[i]) / utag.data.booking_extras_units[i], quantity: utag.data.booking_extras_units[i] }); } } } else { actionEvent.user.attributes.bookingExtras = "sin_extras"; } if (arrayItems.length > 0) { actionEvent.itemAction = Evergage.ItemAction.Purchase actionEvent.order = { Product: { orderId: utag.data["qp.itineraryNumber"], lineItems: arrayItems, currency: utag.data.booking_user_currency.toUpperCase() } } } } } /* if ((utag.data.booking_extras_id && (utag.data.booking_extras_id.length > 0)) { const additionalEventIS = { action: "[Event] booking sin extras", }; Evergage.sendEvent(additionalEventIS); } */ return actionEvent }, contentZones: [{ name: "cbe_mobile_my_barcelo_tooltip", selector: ".Header_content__gOOgL nav ul:nth-of-type(1) li:last-of-type" }, { name: "cbe_desktop_my_barcelo_tooltip", selector: ".Header_content__gOOgL nav ul:nth-of-type(2) li:last-of-type" } ] }, { name: "sign_up_page", action: "[View]Sign Up", isMatch: () => utag.data.page_section == "mybarcelo" && utag.data.page_sub_section == "signup" && utag.data.user_is_logged == "false" }, { name: "sign_in_page", action: "[View]Sign In", isMatch: () => utag.data.page_section == "mybarcelo" && utag.data.page_sub_section == "signin" }, { name: "mybarcelo_private_area_page", action: "[View]MyBarcelo Private Area", isMatch: () => location.pathname.indexOf("/mybarcelo/area-privada") > 0, contentZones: [{ name: "mybarcelo_profile_banner", selector: ".myb-profile-status" },{ name: "mybarcelo_promo_banner", selector: ".c-l-hero__main__cards-2.js-card-2:not(.hidden)" }, { name: "areaPrivada_menu_mobile", selector: ".c-l-hero__main" }, { name: "areaPrivada_menu_desktop", selector: ".c-tab-menu__nav-container" },{ name: "areaPrivada_banner", selector: '[id*="modules_area_privada_my_barcelo_home_hero_jcr_content_root_myb_loyalty_targetin_web_1_responsivegrid_myb_loyalty_hero_cop"]' }] }, { name: "my_reservations_page", action: "[View]My Reservations", isMatch: () => location.pathname == "/reservation-list" }, { name: "my_profile_page", action: "[View]My Profile", isMatch: () => utag.data.page_section == "mybarcelo" && utag.data.page_sub_section == "signup" && utag.data.user_is_logged == "true" }, { name: "booking_details_active_page", action: "[View]Booking Details - Active Booking", isMatch: () => location.host == "booking.barcelo.com" && location.pathname == "/search-results" && Evergage.cashDom(".confirmation-message_Confirmed").length > 0, listeners: [ Evergage.listener("mouseover", ".booking-summary-reservations_cancelRoomModalContainer .button_group .button_primary", () => { window.hasMouseOverISEventFired = window.hasMouseOverISEventFired || false; if (!hasMouseOverISEventFired){ Evergage.sendEvent({ action: "[Hover]Cancel Booking Popup Button", source: Evergage.getCurrentPage().source }) hasMouseOverISEventFired = true; } }), Evergage.listener("click", "[id^=auto-remove]", () => { window.hasClickISEventFired = window.hasClickISEventFired || false; if (!hasClickISEventFired){ Evergage.sendEvent({ action: "[Click]Cancel Booking Popup Button", source: Evergage.getCurrentPage().source }) hasClickISEventFired = true; } }) ], contentZones: [{ name: "cancellation_widget", selector: "body" }] }, { name: "cbe_booking_details_active_page", action: "[View]CBE Booking Details - Active Booking", isMatch: () => (utag.data.page_section === "booking process" || utag.data.page_section === "booking management") && (utag.data.page_sub_section === "manage reservation" || utag.data.page_sub_section === "cancel reservation" || utag.data.page_sub_section === "reservation detail"), listeners: [ Evergage.listener("click", ".Survey_buttonsWrapper__FALJs .Survey_cancelButton__BjXdB", () => { let valorFinal = [ Evergage.cashDom("[data-pool-reason]")[0]?.getAttribute("data-pool-reason") || "", Evergage.cashDom("[data-pool-secondary-reason]")[0]?.getAttribute("data-pool-secondary-reason") || "", Evergage.cashDom("[class*='SurveyCancelReason_cancelReasonField']")[0]?.value?.trim() || "" ].filter(Boolean).join(" | "); console.log("valorFinal:", valorFinal); const bookingId = new URL(url).pathname.split("/").pop(); Evergage.sendEvent({ action: "[Click]CBE Cancel Booking Button", source: Evergage.getCurrentPage().source, user: { attributes: { cancelReasonCBE: valorFinal + "" } } }) if (utag.data.user_email) { utag.link({ tealium_event: "Cancel Reason", bc_cancelreason: valorFinal, bc_email: utag.data.user_email, bc_bookingId: bookingId }) } }), Evergage.listener( "click", "button[data-cancellation-call-button]", function (event, context) { const btn = event.target.closest("button[data-cancellation-call-button]"); if (!btn) return; const value = btn.getAttribute("data-cancellation-call-button"); console.log("Clicked cancellation button:", value); const bookingId = new URL(url).pathname.split("/").pop(); let valorFinal = [ Evergage.cashDom("[data-pool-reason]")[0]?.getAttribute("data-pool-reason") || "", Evergage.cashDom("[data-pool-secondary-reason]")[0]?.getAttribute("data-pool-secondary-reason") || "", Evergage.cashDom("[class*='SurveyCancelReason_cancelReasonField']")[0]?.value?.trim() || "" ].filter(Boolean).join(" | "); if (utag.data.user_email) { utag.link({ tealium_event: "Cancel Reason CMB", bc_cancelreason: valorFinal, bc_email: utag.data.user_email, bc_bookingId: bookingId }) } } ) ], contentZones: [{ name: "cancellation_widget", selector: "body" }] }, { name: "booking_details_cancelled_page", action: "[View]Booking Details - Cancelled Booking", isMatch: () => location.host == "booking.barcelo.com" && location.pathname == "/search-results" && Evergage.cashDom(".confirmation-message_Cancelled").length > 0 }, { name: "help_page", action: "[View]Help", isMatch: () => utag.data.page_section == "utilities" && utag.data.page_sub_section == "help", listeners: [ Evergage.listener("click", "#rm-booking-delete", () => { Evergage.sendEvent({ action: "[Click]Cancel Booking Form Button", source: Evergage.getCurrentPage().source }) }) ], contentZones: [{ name: "cancellation_widget", selector: "body" }] }, { name: "destination_page", action: "[View]Destination", //isMatch: () => utag.data.page_section == "destination" && utag.data.hotel_continent !== undefined, //isMatch: () => utag.data.page_section == "hotels" && utag.data.page_sub_section == "home" && typeof(utag.data.hotel_continent) !== 'undefined' , isMatch: () => utag.data.page_section == "hotels list" && utag.data.page_sub_section == "results" && utag.data.hotel_continent !== undefined, onActionEvent: (actionEvent) => { actionEvent.user = actionEvent.user || {}; actionEvent.user.attributes = actionEvent.user.attributes || {}; //actionEvent.user.attributes.lastDestinationId = utag.data.hotel_city ? "city-" + utag.data.hotel_city : utag.data.hotel_province ? "province-" + utag.data.hotel_province : utag.data.hotel_state ? "state-" + utag.data.hotel_state : utag.data.hotel_country ? "country-" + utag.data.hotel_country : undefined actionEvent.user.attributes.lastDestinationId = utag.data.destination_id ? utag.data.destination_id.toLowerCase() : utag.data.hotel_city ? "city-" + utag.data.hotel_city : utag.data.hotel_province ? "province-" + utag.data.hotel_province : utag.data.hotel_state ? "state-" + utag.data.hotel_state : utag.data.hotel_country ? "country-" + utag.data.hotel_country : undefined actionEvent.user.attributes.offerManagerDestinationSelector = utag.data.hotel_destination ? utag.data.hotel_destination : undefined actionEvent.user.attributes.destinationCheckIn = utag.data.booking_check_in_hyphen ? utag.data.booking_check_in_hyphen : "" actionEvent.user.attributes.destinationCheckOut = utag.data.booking_check_out_hyphen ? utag.data.booking_check_out_hyphen : "" actionEvent.user.attributes.destinationIdLastUpdatedDate = actionEvent.user.attributes.lastDestinationId ? new Date().toISOString() : undefined return actionEvent }, catalog: { Destination: { _id: () => utag.data.destination_id ? utag.data.destination_id.toLowerCase() : utag.data.hotel_city ? "city-" + utag.data.hotel_city : utag.data.hotel_province ? "province-" + utag.data.hotel_province : utag.data.hotel_state ? "state-" + utag.data.hotel_state : utag.data.hotel_country ? "country-" + utag.data.hotel_country : undefined, //name: () => JSON.parse(Evergage.cashDom("script[type='application/ld+json']")[1].text).name, name: Evergage.cashDom(".cmp-breadcrumb__item--active > span")[0]?.textContent ?? "", url: Evergage.resolvers.fromHref(url => url.split("?")[0]), description: () => utag.data['meta.description'] } }, contentZones: [{ name: "global_herobanner", selector: ".heroslider" },{ name: "main_clustering_hotel_lp", selector: ".container-fastbooking-hero-JS" },{ name: "main_clustering_offer_lp", selector: ".container-fastbooking-hero-JS" },{ name: "main_clustering_destination_lp", selector: ".container-fastbooking-hero-JS" },{ name: "destination_smallBanner", selector: ".heroslider" }] }, { name: "hotel_offer_page", action: "[View]Hotel Offer", // isMatch: () => utag.data.page_section == "hotels" && utag.data.page_sub_section == "home", isMatch: () => utag.data.page_section == "hotels list" && utag.data.page_sub_section == "results" && utag.data.page_name == "hoteles", listeners: [ Evergage.listener("click", "[data-dimension=hotel_themes] input", (e) => { collection_map = { 'wifi-gratis' : 'wifi', 'parejas': 'couples', 'familias': 'family', 'reuniones': 'meetings', 'playa': 'beach', 'spa': 'spa', 'bodas': 'wedding', 'urbanos': 'urban', 'todo-incluido': 'all inclusive', 'golf': 'golf', 'navidad': 'navidad', 'descuento-residentes': 'resident-discount', 'premium-level': 'premium level', 'grandes-resorts': 'large resorts', 'buceo': 'diving', 'lujo': 'luxury', 'adults-only': 'adults only', 'royal-level': 'royal level', 'todo-incluido-plus': 'all inclusive plus', 'pets': 'pets', 'norte-de-espana': 'north-spain', 'casino': 'casino', 'barcelo-fuerteventura-beach-resort': 'barcelo-fuerteventura-beach-resort' } collection = collection_map[e.target.closest('.facet').getAttribute('data-facet')] if (collection){ Evergage.sendEvent({ action: "[Click]Collection", itemAction: Evergage.ItemAction.ClickThrough, catalog: { Collection: { _id: collection } } }) } }) ], contentZones: [{ name: "hotel_offer_recs", selector: "#home_hoteles_jcr_content_root_responsivegrid_generic_container" },{ name: "main_clustering_hotel_lp", selector: ".container-fastbooking-hero-JS" },{ name: "main_PRS_PRU_hotel_lp", selector: ".container-fastbooking-hero-JS" }] }, { name: "collection_hotel_offer_page", action: "[View]Collection Hotel Offer", isMatch: () => utag.data.page_section == "hotels list" && utag.data.page_sub_section == "results" && utag.data.page_name != "hoteles", listeners: [ Evergage.listener("click", "[data-dimension=hotel_themes] input", (e) => { collection_map = { 'wifi-gratis' : 'wifi', 'parejas': 'couples', 'familias': 'family', 'reuniones': 'meetings', 'playa': 'beach', 'spa': 'spa', 'bodas': 'wedding', 'urbanos': 'urban', 'todo-incluido': 'all inclusive', 'golf': 'golf', 'navidad': 'navidad', 'descuento-residentes': 'resident-discount', 'premium-level': 'premium level', 'grandes-resorts': 'large resorts', 'buceo': 'diving', 'lujo': 'luxury', 'adults-only': 'adults only', 'royal-level': 'royal level', 'todo-incluido-plus': 'all inclusive plus', 'pets': 'pets', 'norte-de-espana': 'north-spain', 'casino': 'casino', 'barcelo-fuerteventura-beach-resort': 'barcelo-fuerteventura-beach-resort' } collection = collection_map[e.target.closest('.facet').getAttribute('data-facet')] if (collection){ Evergage.sendEvent({ action: "[Click]Collection", itemAction: Evergage.ItemAction.ClickThrough, catalog: { Collection: { _id: collection } } }) } }), Evergage.listener("click", ".data-collect-destination-form-button-send-JS", () => { Evergage.sendEvent({ action: "[Click] Data Collect Destination", source: Evergage.getCurrentPage().source }) }) ], contentZones: [{ name: "hotel_offer_recs", selector: "#home_hoteles_jcr_content_root_responsivegrid_generic_container" },{ name: "main_clustering_hotel_lp", selector: ".container-fastbooking-hero-JS" },{ name: "main_PRS_PRU_hotel_lp", selector: ".container-fastbooking-hero-JS" },{ name: "destination_smallBanner", selector: ".data-collect-destination-form" },{ name: "main_clustering_collection_lp", selector: ".container-fastbooking-hero-JS" }] }, { name: "gift_card_page", action: "[View]Gift Card", isMatch: () => utag.data.page_section == "gift card" && utag.data.page_sub_section == "home" }, { name: "offers_page", action: "[View]Offers", // isMatch: () => utag.data.page_section == "offers" && utag.data.page_sub_section == "home", isMatch: () => utag.data.page_section == "offers" && utag.data.page_sub_section == "offer landing page" && utag.data.page_name == "ofertas", listeners: [ Evergage.listener("click", "[data-dimension=hotel_themes] input", (e) => { collection_map = { 'wifi-gratis' : 'wifi', 'parejas': 'couples', 'familias': 'family', 'reuniones': 'meetings', 'playa': 'beach', 'spa': 'spa', 'bodas': 'wedding', 'urbanos': 'urban', 'todo-incluido': 'all inclusive', 'golf': 'golf', 'navidad': 'navidad', 'descuento-residentes': 'resident-discount', 'premium-level': 'premium level', 'grandes-resorts': 'large resorts', 'buceo': 'diving', 'lujo': 'luxury', 'adults-only': 'adults only', 'royal-level': 'royal level', 'todo-incluido-plus': 'all inclusive plus', 'pets': 'pets', 'norte-de-espana': 'north-spain', 'casino': 'casino', 'barcelo-fuerteventura-beach-resort': 'barcelo-fuerteventura-beach-resort' } collection = collection_map[e.target.closest('.facet').getAttribute('data-facet')] if (collection){ Evergage.sendEvent({ action: "[Click]Collection", itemAction: Evergage.ItemAction.ClickThrough, catalog: { Collection: { _id: collection } } }) } }) ], contentZones: [{ name: "offers_recs", selector: "#home_ofertas_jcr_content_root_responsivegrid_generic_container_99" },{ name: "form_PCU_offer_lp", selector: ".container-fastbooking-hero-JS" },{ name: "promocode_PCU_offer_lp", selector: "#mainContainer_pcu .promocode_pcu" },{ name: "main_clustering_offer_lp", selector: ".container-fastbooking-hero-JS" }] }, { name: "campaign_page", action: "[View]Campaign", isMatch: () => utag.data.page_section == "offers" && (utag.data.page_sub_section == "offer landing page" || utag.data.page_sub_section == "landing offer page") && utag.data.page_name != "ofertas", contentZones: [{ name: "form_PCU_offer_lp", selector: ".container-fastbooking-hero-JS" },{ name: "promocode_PCU_offer_lp", selector: "#mainContainer_pcu .promocode_pcu" },{ name: "campaign_smallBanner", selector: ".heroslider" },{ name: "affiliation_personalization_section", selector: "[id*=home_ofertas_coupons_jcr_content_root_responsivegrid_market_targeting_item] .c-container__grid-wrapper" },{ name: "main_clustering_offer_lp", selector: ".container-fastbooking-hero-JS" }] }, // { // name: "campaign_home_page", // action: "[View]Campaign_home", // isMatch: () => utag.data.page_section == "offers" && utag.data.page_sub_section == "offer landing page" && utag.data.page_name == "ofertas", // contentZones: [{ // name: "form_PCU_offer_lp", // selector: ".container-fastbooking-hero-JS" // },{ // name: "promocode_PCU_offer_lp", // selector: "#mainContainer_pcu .promocode_pcu" // } // ] // }, { name: "checkin_page", action: "[View]Online Check-in", isMatch: () => utag.data.page_section == "bhg" && utag.data.page_sub_section == "checkin" }, { name: "cookie_policy_page", action: "[View]Cookie Policy", isMatch: () => utag.data.page_section == "utilities" && utag.data.page_sub_section == "cookie policy" }, { name: "wcay_page", action: "[View]We Care About You", isMatch: () => utag.data.page_section == "utilities" && utag.data.page_sub_section == "we care about you" }, { name: "coupons_page", action: "[View]Coupons", isMatch: () => utag.data.page_section == "offers" && utag.data.page_sub_section == "coupons", contentZones: [{ name: "affiliation_personalization_section", selector: "[id*=home_ofertas_coupons_jcr_content_root_responsivegrid_market_targeting_item] .c-container__grid-wrapper" }] }, { name: "barcelo_films_home", action: "[View] Barcelo Films Home", isMatch: () => utag.data.page_name == "barcelo-films" &&utag.data.page_section == "barcelo films" && utag.data.page_sub_section == "home", contentZones: [] }, { name: "barcelo_films_video", action: "[View] Barcelo Films Video", isMatch: () => utag.data.page_name == "barcelo-films-video" &&utag.data.page_section == "barcelo films" && utag.data.page_sub_section == "films", contentZones: [] } ] }; const initSitemapHandler = () => { window.ISConsentApplied = false; if (Evergage.getState().config.pageTypes.length === 0) { Evergage.initSitemap(sitemapConfig) } else { Evergage.reinit() } } document.body.addEventListener("spa_pageview", function() { if (typeof(Evergage) != 'undefined' && Evergage.getCurrentPage().source){ url = new URL(Evergage.getCurrentPage().source.url); url2 = new URL(document.URL); if (url.pathname != url2.pathname) { initSitemapHandler() } } else{ initSitemapHandler() } }) window.ISConsentApplied || false document.domain !== "booking.barcelo.com" && document.domain !== "reservation.barcelo.com" ? initSitemapHandler() : (document.URL.indexOf("booking.barcelo.com/review?") != -1 || document.URL.indexOf("booking.barcelo.com/reservation-list") != -1) ? initSitemapHandler() : window.ISConsentApplied ? initSitemapHandler() : undefined }); else { Evergage.removeCookies(); } } document.body.addEventListener("apply_consent", function() { window.ISConsentApplied= true; initInteractionStudio() }) initInteractionStudio() } catch (e) { if (typeof window.Evergage === "object" && typeof window.Evergage.getVersion === "function" && window.Evergage.getVersion() >= 5) { console.error("siteWideJavascriptError" + e); } }; }